[R] ggplot2 - legend for fill coulours

Pedro de Barros pbarros at ualg.pt
Tue Mar 25 14:32:17 CET 2008


Dear Thierry,

Thanks, it worked. I though the algorithm behind the plotting uses 
some approach like unique(), so that the order of the plot is that of 
the first occurrence of each code, but I could not get into the code 
to modify this.
Anyway, Hadley has already gently volunteered to look into this for a 
more permanent solution, I look forward to it, as I really like the 
ggplot philosophy...

Thanks again,

Pedro
At 09:24 2008/03/25, you wrote:
>Dear Pedro,
>
>Sorting your data before plotting it will probably sort your problem.
>
>plotdata2 <- plotdata2[order(plotdata2$group), ]
>
>HTH,
>
>Thierry
>
>------------------------------------------------------------------------
>----
>ir. Thierry Onkelinx
>Instituut voor natuur- en bosonderzoek / Research Institute for Nature
>and Forest
>Cel biometrie, methodologie en kwaliteitszorg / Section biometrics,
>methodology and quality assurance
>Gaverstraat 4
>9500 Geraardsbergen
>Belgium
>tel. + 32 54/436 185
>Thierry.Onkelinx at inbo.be
>www.inbo.be
>
>To call in the statistician after the experiment is done may be no more
>than asking him to perform a post-mortem examination: he may be able to
>say what the experiment died of.
>~ Sir Ronald Aylmer Fisher
>
>The plural of anecdote is not data.
>~ Roger Brinner
>
>The combination of some data and an aching desire for an answer does not
>ensure that a reasonable answer can be extracted from a given body of
>data.
>~ John Tukey
>
>-----Oorspronkelijk bericht-----
>Van: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
>Namens Pedro de Barros
>Verzonden: zondag 23 maart 2008 13:02
>Aan: r-help at stat.math.ethz.ch
>Onderwerp: [R] ggplot2 - legend for fill coulours
>Urgentie: Hoog
>
>Dear All,
>
>I am trying to build a stacked bar plot, where I define the colours to
>use.
>
>I have asked this before, and I was using a solution in
>http://thread.gmane.org/gmane.comp.lang.r.general/100649/focus=100673
>(thanks, Thierry).
>
>However, it looks this works only when the data are in the sequence
>of the levels in the factor defining the fill colours. When the
>sequence is different, the legend gets "scrambled", in that the order
>of the colours does not match the labels.
>
>My code is below. Can anyone tell me how to get around this? (R 2.2.6
>for Windows, ggplot2 version 2_0.5.7)
>
>Thanks,
>Pedro
>library(ggplot2)
>Data:
>
>  > plotdata2
>     x   y  group
>1  1 0.1 grey30
>2  2 0.2 grey30
>3  3 0.3 grey10
>4  4 0.4 grey90
>5  1 0.1 grey30
>6  2 0.2 grey60
>7  3 0.3 grey60
>8  4 0.4 grey90
>9  1 0.1 grey60
>10 2 0.2 grey10
>11 3 0.3 grey90
>12 4 0.4 grey30
>13 1 0.1 grey90
>14 2 0.2 grey60
>15 3 0.3 grey10
>16 4 0.4 grey10
>  > levels(plotdata2$group)
>[1] "grey10" "grey30" "grey60" "grey90"
>  > as.numeric(plotdata2$group)
>   [1] 2 2 1 4 2 3 3 4 3 1 4 2 4 3 1 1
>
>Code:
>plot0<-ggplot()
>layer1<-layer(data=plotdata2, mapping=aes_string(x='x',y='y',
>fill='group'),geom='bar', stat='identity', position='stack')
>scaleFill<-scale_fill_identity(labels=levels(plotdata2$group),
>guide='tile', name='Group')
>scaleY<-scale_y_continuous(limits=c(0,4), expand=c(0,0))
>plot1<-plot0+layer1 +scaleFill +scaleY
>
>plot1
>
>______________________________________________
>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