Reputation: 4021
I am trying to make boxplots with a transparent fill and a corresponding legend. The plotting with alpha values works fine except that the legend keys do not have transparent fills. The following example illustrates the difficulty:
dat <- data.frame(x=c('a', 'b', 'c'), y = runif(300), z = c('d', 'e', 'e'))
ggplot(dat) + geom_boxplot(aes(x, y, fill = z, colour = z), alpha = 0.2)
Is there a way to make the fill values in the legend keys transparent too?
SessionInfo()
R version 2.14.0 (2011-10-31)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
ggplot2_0.8.9
Thanks in advance for any tips on this issue.
An example where the alpha mapping works is the following
ggplot(dat) + geom_point(aes(x, y, fill = z, colour = z, shape = z), alpha = 0.2)
Upvotes: 8
Views: 5723
Reputation: 43255
The solution I've used in the past is this one... its a huge hack but works.
dat <- data.frame(x=c('a', 'b', 'c'), y = runif(300), z = c('d', 'e', 'e'))
dummy <- dat
dummy$z <- factor(dummy$z)
dummy <- dummy[1,]
dummy[,2]<-NaN
ggplot() +
geom_boxplot(data=dat,aes(x, y, fill = z, colour = z), alpha = 0.2,legend=FALSE) +
geom_density(data=dummy,aes(x, fill = z, colour = z), alpha = 0.2)
I usually use it when I'm making a geom_text plot, but want the legend to show as points or blocks. But it works for this instance too.
In case Hadley is paying attention to this thread, I've found myself wanting a plot=T/F option that works like the legend option for this situation.
Upvotes: 1