是否可以指定色阶的阈值?
看看这个例子:
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的值得到一个0的alpha值,这样左下半部分将是不可见的。显然我可以改变原始数据,但这会破坏传说。
答案 0 :(得分:13)
阈值正常,阈值以外的值设置为NA
;问题是alpha
的{{1}}呈现为完全不透明。将比例NA
设置为na.value
可获得所需的结果。
0
答案 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))
因此,需要采用不同的方法:从数据中删除您不想绘制的值:
xyd <- with(xyd, xyd[a>0.5, ])
ggplot(xyd, aes(x=x, y=y, fill=z)) +
geom_tile(aes(alpha=a))