4

我正在尝试使用 alpha 来控制图形填充的透明度。我了解 alpha 功能已移至 scales 包中,但我仍然无法使其工作。

数据集:

library(scales)
library(ggplot2)
Groups <- data.frame(Level=c("High", "Above Average", "Average", "Below Average", "Low"),       
                     Start=c(7.5, 5.5, 4.5, 2.5, .5), End=c(11.5, 7.5, 5.5, 4.5, 2.5)) 
Groups$Start<-as.numeric(as.character(Groups$Start))

d <- data.frame(x=1:10, y=1:10)

basicBox <- ggplot(d, aes(factor(x), y)) + geom_boxplot()
basicBox + 
  geom_rect(aes(NULL, NULL, xmin=Start, xmax=End, fill=Level), ymin=0, ymax=20, data=Groups) + 
  scale_fill_manual(values=alpha(c("red", "blue", "green", "grey", "purple"), 0.2))

类似的代码可以在 Hadley Wickham 的 ggplot2 的第 86 页找到。当我不加载 scales 库时,我得到并错误地说 R 无法识别 alpha 函数,但即使在我加载 scales 之后,我也无法让 alpha 正常工作。

4

2 回答 2

11

如果我得到你的要求,它应该是这样的:

basicBox + 
  geom_rect(aes(NULL, NULL, xmin=Start, xmax=End, fill=Level), 
            ymin=0, ymax=20, data=Groups, alpha=0.2) + 
  scale_fill_manual(values=c("red", "blue", "green", "grey", "purple"))

我将 alpha 参数放入geom_rect并没有将其用作函数。

于 2012-06-16T22:20:59.713 回答
1

不确定“无法让 alpha 正常工作”是什么意思;你的代码对我来说运行良好。

小建议:

ggplot(d, aes(factor(x), y)) + 
  geom_rect(aes(NULL, NULL, xmin=Start, xmax=End, fill=Level), 
            alpha = 0.2, ymin=-Inf, ymax=Inf,data=Groups) + 
  geom_boxplot() +
  scale_fill_brewer(palette="Pastel1")
于 2012-06-16T22:20:24.517 回答