[R] Help with continuous color plot

matt at considine.net matt at considine.net
Wed Sep 24 21:36:58 CEST 2014


No, I don't think so.  And I've wondered if I described the problem 
clearly, so I put together the following hack, which seems to be what I 
want :

#create a matrix to hold the values corresponding to various percentiles
vals<-matrix(0,32,21)
#for each row in the data, collect info on the distribution
for(i in 1:32){
   obs <- testdataset[i,]
   vals[i,] <- quantile(obs, probs=seq(0,1,0.05))
}

#pick the last observation to get a distrbution of colors
cols <- sort(densCols(vals[32,]))

#set up a blank plot
matplot(vals, type="n", xlab = 'yrs', ylab = 'Ratio',
         main = 'Projected ratios')

#plot confidence bands as polygons, ideally overlaying light to dark
for (i in 1:10){
   lines(vals[,i],col=cols[22-i])
   lines(vals[,22-i],col=cols[22-i])
   
polygon(c(seq(1:32),rev(seq(1:32))),c(vals[,22-i],rev(vals[,i])),col=cols[22-i],border="NA")
}

#plot a line for the average case
lines(vals[,11],col="black")

If anyone can suggest a more efficient/effective/better/etc/etc way of 
doing this, I'd be grateful.  In a nutshell, I am trying to find a 
visually clean way of showing the output of a Monte Carlo analysis.

Thanks again for everyone's attention.
Matt


On 2014-09-24 14:14, Federico Lasa wrote:
> Does this resemble what you're after?
> 
> library(reshape2)
> tst <- melt(testdataset)
> library(ggplot2)
> 
> ggplot(tst, aes(x=Var1, y=Var2, fill=value)) +
>   geom_tile() +
>   scale_fill_gradient2(low="white",
>     high="white",
>     mid=scales::muted("blue"),
>     midpoint=0.6148377)
> 
> On Wed, Sep 24, 2014 at 10:26 AM,  <matt at considine.net> wrote:
>> Hi,
>> I have a matrix of data, with the rows representing observations and 
>> the
>> columns representing various values that the observation can take on.  
>> In
>> other words, each row can be thought of as a sampling of the density
>> function/histogram associated with the range of values for that 
>> observation.
>> 
>> I'd like to graph these with a shaded color, rather than as lines.  So 
>> a
>> given observation would have the darkest shade at the mean and the 
>> shading
>> would lighten for values that approached the tails.  In a sense this 
>> is like
>> a ribbon chart, but where there are many confidence bands.
>> 
>> I think the example near the bottom of this page
>>   http://bconnelly.net/2013/10/creating-colorblind-friendly-figures/
>> starts to get at what I want.  But when I tried to get a ribbon, I get 
>> an
>> error message saying that "Error: Aesthetics can not vary with a 
>> ribbon"
>> 
>> Can anyone point me to an example that accomplishes my task, or give 
>> me some
>> ideas as to how to code this?
>> 
>> Below is a reproducible dataset and the code I ran that generated the 
>> above
>> error.  And apologies in advance if I have overlooked some obvious 
>> source -
>> I'm not exactly sure what keywords to search for.
>> 
>> Regards,
>> Matt
>> 
>> testdataset <- structure(c(0.703482475602795, 0.708141442616021,
>> 0.696373713631662,
>>                            0.670284015871304, 0.675183812793659,
>> 0.690440437259122, 0.717483375152826,
>>                            0.775328205198994, 0.848374059782512,
>> 0.869939471712489, 0.86329313061477,
>>                            0.842138830353923, 0.819853961383293,
>> 0.808038546509378, 0.826626282345039,
>>                            0.855428819162732, 0.873943618483253,
>> 0.906412218904192, 0.95345525957727,
>>                            0.941481792397259, 0.923791753474186,
>> 0.909206164221341, 0.847283523824235,
>>                            0.774333551860785, 0.723440114819687,
>> 0.653247411286407, 0.585889004137383,
>>                            0.516531935718585, 0.458855598305008,
>> 0.422596378188962, 0.385800210249005,
>>                            0.363663809831211, 0.703482475602795,
>> 0.708055808109959, 0.696379276680681,
>>                            0.686643131558789, 0.702628930558265,
>> 0.736010723583024, 0.790795207667811,
>>                            0.843997296035071, 0.872447231982615,
>> 0.876357159885425, 0.852095141662599,
>>                            0.815122741092172, 0.759163100114952,
>> 0.737079598996168, 0.755626127703219,
>>                            0.76375495269533, 0.757290640161052,
>> 0.754301244147121, 0.738872719902144,
>>                            0.712590028244082, 0.707690675037336,
>> 0.707234385372842, 0.708720518303698,
>>                            0.723271948541464, 0.738173079905318,
>> 0.772161522113349, 0.776237486574842,
>>                            0.775666977944939, 0.764229462885737,
>> 0.758916671383124, 0.742887393474484,
>>                            0.741362343479079, 0.703482475602795,
>> 0.70722192044612, 0.694934601341247,
>>                            0.675623005679584, 0.67355293987199,
>> 0.67514195581405, 0.701338223542176,
>>                            0.770084545123592, 0.826615555391194,
>> 0.815331595124185, 0.801265437257298,
>>                            0.768736104243487, 0.698903427959817,
>> 0.654393072393584, 0.646507677289504,
>>                            0.606308031283892, 0.574521529688064,
>> 0.550931914275617, 0.518538683619987,
>>                            0.495773346159491, 0.482784058725618,
>> 0.473031502762785, 0.462940836756943,
>>                            0.455472910452526, 0.457374752189383,
>> 0.468449683385787, 0.469177346159405,
>>                            0.47981744053419, 0.500517935694715,
>> 0.521161553352487, 0.538278248678118,
>>                            0.545834896270532, 0.703482475602795,
>> 0.707475643569319, 0.695699528962731,
>>                            0.695460540915422, 0.705063229294573,
>> 0.694190083263775, 0.676451221936696,
>>                            0.661139999162065, 0.627150885842318,
>> 0.592467979293877, 0.556197511727567,
>>                            0.524883713023224, 0.484571801496662,
>> 0.427784904562, 0.370137413134906,
>>                            0.331233866457343, 0.292181528642806,
>> 0.265504971226103, 0.239129968439056,
>>                            0.21258454640671, 0.184521419432522,
>> 0.160633576032345, 0.135729972994914,
>>                            0.115111431576686, 0.0933784744252792,
>> 0.0672765522562478, 0.0397992726679255,
>>                            0.0118179662548541, NA, NA, NA, NA,
>> 0.703482475602795, 0.70791132542366,
>>                            0.696508162877812, 0.672357035115831,
>> 0.679831378223931, 0.702075998432084,
>>                            0.736057349706643, 0.759252979404642,
>> 0.739391321260192, 0.706608353324493,
>>                            0.653481111693474, 0.607986236497692,
>> 0.600942686427268, 0.602450590412635,
>>                            0.594096281507138, 0.598414292518021,
>> 0.570859444977738, 0.50462737404968,
>>                            0.441225469913529, 0.37010584373766,
>> 0.299554326292306, 0.250957120974181,
>>                            0.231147047662909, 0.218081437060998,
>> 0.209354124252359, 0.212236940966109,
>>                            0.213898409405384, 0.200693009702681,
>> 0.189880443626695, 0.175663436717225,
>>                            0.160910269517771, 0.14423774751828,
>> 0.703482475602795, 0.707648742091919,
>>                            0.696092540716741, 0.656540853310246,
>> 0.6051367218461, 0.591695064299013,
>>                            0.596015810648035, 0.603800534715597,
>> 0.630728546677123, 0.658732672149451,
>>                            0.660216960664134, 0.675188962779905,
>> 0.680940355728037, 0.677371529164165,
>>                            0.678862966955137, 0.706307948099043,
>> 0.72103331978575, 0.71201796002067,
>>                            0.695266699409018, 0.685297231486624,
>> 0.661576951062559, 0.643301885602357,
>>                            0.619830526453808, 0.608129873046412,
>> 0.594283830084397, 0.562317115717112,
>>                            0.530350595536459, 0.506782526041746,
>> 0.485311767855001, 0.473335687828819,
>>                            0.47767850215973, 0.47780651839627,
>> 0.703482475602795, 0.708970958906805,
>>                            0.697551150784402, 0.661080016538957,
>> 0.61232038566617, 0.587787379274781,
>>                            0.593431699246192, 0.585207322444761,
>> 0.568559116457046, 0.548048255621954,
>>                            0.530114701694855, 0.534118004338362,
>> 0.551070523651917, 0.575923824458594,
>>                            0.601811119913484, 0.599679943614892,
>> 0.571040665848032, 0.537593347467274,
>>                            0.517448133546794, 0.509401266935977,
>> 0.506839184709813, 0.513795796376072,
>>                            0.538416419444161, 0.54431580354862,
>> 0.533416582151419, 0.536830327067308,
>>                            0.536462655629334, 0.513629165635279,
>> 0.478995218355945, 0.438690505845544,
>>                            0.382567436102273, 0.34023179757446,
>> 0.703482475602795, 0.708469004078862,
>>                            0.697978508894162, 0.676172179276398,
>> 0.653999136795877, 0.621901773418305,
>>                            0.611086726778221, 0.593857278888487,
>> 0.59772372401201, 0.615523307201519,
>>                            0.639972290824288, 0.642201950188424,
>> 0.640462288885887, 0.599634050862654,
>>                            0.556922658075191, 0.51984992524725,
>> 0.500551878868105, 0.481116358620079,
>>                            0.46280476578578, 0.439079916934238,
>> 0.426481043460678, 0.4046073777228,
>>                            0.384894885963074, 0.387418227322783,
>> 0.397735327855843, 0.382421337902373,
>>                            0.364609477937235, 0.351141834403433,
>> 0.326023299419572, 0.298998310511409,
>>                            0.279388702747555, 0.265729633371279,
>> 0.703482475602795, 0.708084110634261,
>>                            0.695308105608089, 0.680512620916581,
>> 0.674409687648891, 0.64479397663385,
>>                            0.611185461407328, 0.574633943767944,
>> 0.531967082066137, 0.509238294683539,
>>                            0.539380037981121, 0.605934156503129,
>> 0.67139250700667, 0.692111261722321,
>>                            0.681033453581129, 0.649259774238939,
>> 0.61340010828123, 0.601868728090964,
>>                            0.626623248125788, 0.630474601620122,
>> 0.632877115180945, 0.622655315896617,
>>                            0.602457206226614, 0.577755838513823,
>> 0.575613491077747, 0.56693811567409,
>>                            0.538199408312755, 0.508731518312269,
>> 0.488361667141151, 0.462965384850233,
>>                            0.438776128537772, 0.433205440295598,
>> 0.703482475602795, 0.708955081210283,
>>                            0.696337276771488, 0.675657944024044,
>> 0.682199731001736, 0.713302322144747,
>>                            0.780735831443758, 0.836330924875064,
>> 0.920042864888473, 0.993749005071184,
>>                            1.09383447176433, 1.13919188883409,
>> 1.17120759930688, 1.20149479327377,
>>                            1.21627978424244, 1.16585978639785,
>> 1.11758399725948, 1.04238685207932,
>>                            0.937208207066276, 0.862384770704829,
>> 0.774099878399983, 0.701556273005073,
>>                            0.670583202198987, 0.686968300073611,
>> 0.732378201300416, 0.820191766252091,
>>                            0.855392362283012, 0.845365464014818,
>> 0.803317719342587, 0.757849795095728,
>>                            0.711624608771727, 0.674398052370244), .Dim 
>> =
>> c(32L, 10L))
>> matplot(testdataset, type = 'l', las = 1, xlab = 'x values',
>>         ylab = 'y values', main = 'title - testdataset')
>> library(ggplot2,RColorBrewer,reshape2)
>> testdataset[ is.na(testdataset) ] <- 0
>> testdataset2 <- melt(testdataset)
>> ggplot(testdataset2, aes(x=Var1,y=factor(value))) +
>>   stat_density(aes(fill=..density..), position="identity") +
>>   scale_fill_gradientn(colours=brewer.pal(n=8, name="PuBuGn"))
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list