ggplot2:scale_alpha()的阈值

时间:2012-08-14 10:39:49

标签: r colors ggplot2 alpha

是否可以指定色阶的阈值?

看看这个例子:

xy <- expand.grid(x=1:20,y=1:20)
xyd <- data.frame(xy,z=runif(400),a=rowSums(xy)/40)
g <- ggplot(xyd, aes(x=x, y=y, fill=z, alpha=a)) + 
       geom_tile() + 
       scale_alpha(range=c(0,1), limits=c(0.5,1))
g

Scale_alpha only applies to values within the given limits

我想要的是,低于0.5的值得到一个0的alpha值,这样左下半部分将是不可见的。显然我可以改变原始数据,但这会破坏传说。

2 个答案:

答案 0 :(得分:13)

阈值正常,阈值以外的值设置为NA;问题是alpha的{​​{1}}呈现为完全不透明。将比例NA设置为na.value可获得所需的结果。

0

enter image description here

答案 1 :(得分:4)

我尝试使用刻度来控制alpha都没有完全成功。我最好的尝试是使用ifelse来控制a:

的值
ggplot(xyd, aes(x=x, y=y, fill=z)) + 
  geom_tile(aes(alpha=ifelse(a<=0.5, 0, a))) +
  scale_alpha(range=c(0,1))

enter image description here


因此,需要采用不同的方法:从数据中删除您不想绘制的值:

xyd <- with(xyd, xyd[a>0.5, ])

ggplot(xyd, aes(x=x, y=y, fill=z)) + 
  geom_tile(aes(alpha=a))

enter image description here