yellowcap
yellowcap

Reputation: 4021

Transparency in boxplot legend keys using R and ggplot2

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)

Boxplot with transparencies in fill, but not int the legend

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)

Plot where alpha mapping works fine

Upvotes: 8

Views: 5723

Answers (1)

Justin
Justin

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

Related Questions