gpt4 book ai didi

R - 为 colorRampPalette 添加透明度

转载 作者:行者123 更新时间:2023-12-02 08:23:15 25 4
gpt4 key购买 nike

我正在使用 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 - 为 colorRampPalette 添加透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23620906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com