我正在尝试绘制一个半透明的矩形,其颜色与密度曲线上方的背景颜色相同,因此它会为后者创建一个较浅色的垂直区域(可视化一系列兴趣,例如高峰时段) 。如你所见,alpha失败了。我想知道是否有人可以使用以下代码?
我知道ggplot的alpha通道问题还有其他帖子(for example),但似乎没有解决这个问题,并且目前的情况不明确是版本明确的。
提前致谢:)
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')
答案 0 :(得分: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}得到不同的结果1}}。正如您所说,这是一个与1/256
相关的常见问题。