5

我正在尝试在密度曲线上方绘制一个与背景颜色相同的半透明矩形,以便创建后者的浅色垂直区域(用于可视化诸如高峰时间等感兴趣的范围的技巧)。如您所见,alpha 失败。我想知道是否有人可以使以下代码正常工作?

我知道还有其他关于 ggplot 的 alpha 通道问题的帖子(例如),但似乎没有一个可以解决这个问题,并且不清楚当前的情况是什么版本。

提前致谢 :)

在此处输入图像描述

d <- data.frame(rnorm(100, mean = 0, sd = 100)); names(d) <- 'data'

ggplot(d) + geom_density(aes(x=data),col=NA, fill='grey30') + opts(panel.background=NULL) +
  geom_rect(aes(xmin=-30, xmax=30, ymin=0, ymax=0.005), fill='white',alpha=0.2)

ggplot(d) + geom_density(aes(x=data),col=NA, fill='grey30') + opts(panel.background=NULL) +
  geom_rect(aes(xmin=-30, xmax=30, ymin=0, ymax=0.005), fill='#FFFFFF40')
4

1 回答 1

9

看来您只是选择了太低alpha,例如尝试1/256,这是可能的最低透明度:

ggplot(d) + geom_density(aes(x = data), col = NA, fill = 'grey30') + 
  theme(panel.background = NULL) +
  geom_rect(aes(xmin = -30, xmax = 30, ymin = 0, ymax = 0.005), 
            fill = 'white', alpha = 1/256)

在此处输入图像描述

这对我来说也是一个出乎意料的解决方案,因为取alpha = I(1/d)意味着d必须对多个点进行过度绘制才能给出纯色,所以我们会期待不同的结果1/256。正如您所说,这是与geom_rect.

于 2012-09-09T16:10:28.913 回答