我正在使用smoothScatter
绘制一些数据。我正在尝试将密度的颜色从默认的colorRampPalette(c("white", blues9)
更改为透明的红色。我怎样才能做到这一点?
我试过了:
smoothScatter(
x,y,nrpoints=length(df$x),
colramp = colorRampPalette(c(rgb(1,1,1,0.5),rgb(1,0,0,0.5))
)
但这是行不通的。
更笼统地说,我如何创建一个
colorRampPalette
函数,该函数可以作为包含使所有颜色透明的函数来传递? 最佳答案
您只需要在对alpha=TRUE
的调用中添加colorRampPalette
即可:
>?colorRampPalette
alpha: logical: should alpha channel (opacity) values should be
returned? It is an error to give a true value if ‘space’ is
specified.
> colorRampPalette(c(rgb(1,1,1,0.5),rgb(1,0,0,0.5)))(3)
[1] "#FFFFFF" "#FF7F7F" "#FF0000"
> colorRampPalette(c(rgb(1,1,1,0.5),rgb(1,0,0,0.5)), alpha=TRUE)(3)
[1] "#FFFFFF80" "#FF7F7F80" "#FF000080"
由于您的
colorRampPalette
似乎没有alpha
参数,因此可以采用以下手动解决方案:# Specify alpha as a percentage:
colorRampAlpha <- function(..., n, alpha) {
colors <- colorRampPalette(...)(n)
paste(colors, sprintf("%x", ceiling(255*alpha)), sep="")
}
colorRampAlpha(c(rgb(1,1,1),rgb(1,0,0)), n=3, alpha=0.5)
[1] "#FFFFFF80" "#FF7F7F80" "#FF000080"
但是,您需要预先指定所需的颜色数量。
关于R-为color添加透明度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23620906/