GGPLOT2:阈值用于scale_alpha()(ggplot2: Thresholds for

2019-07-30 23:34发布

是否可以指定颜色尺度门槛?

请看下面的例子:

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

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

Answer 1:

该阈值是否正常,以及阈值之外的值被设置为NA ; 问题是,一个alphaNA是越来越呈现为完全不透明。 设置na.value上的刻度来0获得你想要的结果。

ggplot(xyd, aes(x=x, y=y, fill=z, alpha=a)) + 
       geom_tile() + 
       scale_alpha(range=c(0,1), limits=c(0.5,1), na.value = 0)



Answer 2:

我试图用秤来控制阿尔法没有一个是完全成功的。 我最好的尝试是使用ifelse控制的价值:

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))


因此,需要一种不同的方法:删除您不希望从数据绘制的值:

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

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



文章来源: ggplot2: Thresholds for scale_alpha()