6

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

看这个例子:

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 仅适用于给定范围内的值

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

4

2 回答 2

14

阈值有效,阈值之外的值设置为NA;问题是 analphaNA渲染为完全不透明。设置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)

在此处输入图像描述

于 2012-08-14T16:39:39.457 回答
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))

在此处输入图像描述


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

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

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

在此处输入图像描述

于 2012-08-14T11:18:53.000 回答