无法运作的ggplot alphas

geo*_*ory 5 r ggplot2

我试图绘制一个半透明的矩形,其颜色与密度曲线上方的背景颜色相同,因此它可以创建一个较浅色的垂直区域(一个黑客可以看到一系列的兴趣,如高峰时间).如你所见,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')
Run Code Online (Sandbox Code Playgroud)

Jul*_*ora 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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这对我来说也是一个意想不到的解决方案,因为采取的alpha = I(1/d)手段d是必须过度绘制以提供纯色的多个点,因此我们期望得到不同的结果1/256.正如你所说,这是一个非常常见的问题geom_rect.

  • 15个月后,我终于明白了这个原因!无论geom_rect是否使用它,ggplot都会为数据对象中的每一行绘制一个rect(回想起来很明显).所以解决方案是给geom_rect一个单行数据对象,例如`geom_rect(data = d [1,],..`并解决问题. (2认同)