R ggplot2:scale_alpha()的阈值
是否可以为色阶指定阈值 看看这个例子:R ggplot2:scale_alpha()的阈值,r,colors,ggplot2,alpha,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 xy我尝试使用量表
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
xy我尝试使用量表控制阿尔法的尝试都没有完全成功。我的最佳尝试是使用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))
ggplot(xyd,aes(x=x,y=y,fill=z))+
geom_tile(aes)(alpha=ifelse)(a阈值正在工作,阈值之外的值被设置为NA
;问题是NA
的alpha
被渲染为完全不透明度。将标尺上的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)
但是看,对角线像素的alpha值比我的示例中的透明度要低得多。有效的方法是:ggplot(xyd,aes(x=x,y=y,fill=z))+geom_tile(aes(alpha=ifelse(a
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)