【问题标题】:Applying transparency to a vector of colors in plot function将透明度应用于绘图函数中的颜色向量
【发布时间】:2014-05-02 00:36:33
【问题描述】:

我试图在plot 函数中使用alpha 转换为col 参数。我如何做到这一点,而不必为each_colorcol=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 &lt;- alpha(my_col, 0.5)。或mycol_alpha &lt;- adjustcolor(my_col, alpha.f = 0.5).

标签: string r concatenation vectorization


【解决方案1】:

@Robert 指出,矢量化不是您的问题。

添加

transparency&lt;-round(255*0.5) # 50% alpha

试试看

mycol_alpha &lt;- paste0(mycol,as.hexmode(transparency))

这应该增加plot( ... , col=mycol_alpha , ...)的透明度

不需要 scales::alpha。

【讨论】:

    猜你喜欢
    • 2017-02-21
    • 1970-01-01
    • 2015-10-16
    • 2020-11-19
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    相关资源
    最近更新 更多