【发布时间】:2014-05-02 00:36:33
【问题描述】:
我试图在plot 函数中使用alpha 转换为col 参数。我如何做到这一点,而不必为each_color 写col=alpha(each_color,.5)。
有没有办法将其矢量化?
这是可重现的示例:
set.seed(10)
mydata <- rnorm(100)
mycol <-c("#FDF6E3", "#B3E2CD", "#FDCDAC", "#CBD5E8", "#F4CAE4", "#E6F5C9", "#FFF2AE", "#F1E2CC", "#CCCCCC")
par(bg='gray30')
plot(mydata,col=mycol,pch=19,cex=3)
mycol_alpha <- paste0('alpha(\'',mycol,'\',.5)')
par(bg='white')
有没有办法直接或通过其他方式将mycol_alpha 应用于plot 函数?
更新:
This 有一个解决方案。我的错误,我认为 alpha function 位于基础 R 中。
我们需要library(scales)
解决方案:
set.seed(10)
mydata <- rnorm(100)
mycol <-c("#FDF6E3", "#B3E2CD", "#FDCDAC", "#CBD5E8", "#F4CAE4", "#E6F5C9", "#FFF2AE", "#F1E2CC", "#CCCCCC")
par(bg='gray30')
plot(mydata,col=scales::alpha(mycol,.5),pch=19,cex=3)
【问题讨论】:
-
我不相信,但您确实将
alpha拼错为aphla...您还看到透明度吗?此外,您对paste0的使用已经矢量化了。 -
我不完全确定问题是什么。我假设
alpha是一个自定义函数。它不是矢量化的吗?为什么不?可以写Vectorize(alpha)矢量化吗? -
尝试
grDevices::adjustcolor以获得基本解决方案 -
基本解决方案是最通用的,但
scales::alpha已经矢量化(如果这是您正在使用的alpha()函数)。使用该功能,您不需要粘贴,只需mycol_alpha <- alpha(my_col, 0.5)。或mycol_alpha <- adjustcolor(my_col, alpha.f = 0.5).
标签: string r concatenation vectorization