gpt4 book ai didi

R:使用 colorRampPalette 的透明颜色

转载 作者:行者123 更新时间:2023-12-02 05:30:13 25 4
gpt4 key购买 nike

我有以下代码来绘制带有渐变的箭头:

csa <- function(x1,y1,x2,y2,first.col,second.col,length=0.15, ...) {
cols <- colorRampPalette( c(first.col,second.col))(250)
x <- approx(c(0,1),c(x1,x2), xout=seq(0,1,length.out=251))$y
y <- approx(c(0,1),c(y1,y2), xout=seq(0,1,length.out=251))$y

arrows(x[250],y[250],x[251],y[251], col=cols[250],length=length, ...)
segments(x[-251],y[-251],x[-1],y[-1],col=cols, ...)

}

color.scale.arrow <- Vectorize(csa, c('x1','y1','x2','y2') )

# Create sample data
x <- c(1,3,5,3,2,1,6,2)
y <- c(2,5,3,7,2,1,5,6)

x1 <- c(1,3,5,3)
y1 <- c(2,5,3,7)
x2 <- c(2,1,6,2)
y2 <- c(2,1,5,6)

# Plot sample data
plot(x,y, main='')
color.scale.arrow(x1,y1,x2,y2,'#5F9EA0','#CD3333',lwd=2)

产生了这个图:

enter image description here

我想让这些线条透明,但不幸的是,简单地在颜色代码中添加 50(即透明度比例 = 50%)是行不通的:

# Plot sample data (transparent?)
plot(x,y, main='')
color.scale.arrow(x1,y1,x2,y2,'#5F9EA050','#CD333350',lwd=2)

知道为什么这不起作用,以及如何使这些线透明吗?

最佳答案

我会在生成渐变之后添加透明度,而不是之前。您需要在 csa 内执行此操作函数,因此请考虑添加 alpha两者的论据csacolor.scale.arrow 。假设您已经这样做了,您可以在生成颜色渐变后将 Alpha 透明度添加到颜色渐变中:

cols <- colorRampPalette( c(first.col,second.col))(250)
cols <- paste0(cols, alpha)

还值得注意的是 alpha 透明度也是十六进制:所以 "50"不是 50%,"7f"是。

关于R:使用 colorRampPalette 的透明颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20469564/

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