2014-03-24 22 views
0

我试图用alpha转换为col论点plot功能。我该怎么做,而不必为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一个有解决方案。我的错误,我认为阿尔法function是在基地R。 我们需要library(scales)

解决方案:由@Robert指出

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) 
+0

我不这么认为,但你却拼错了'alpha'为'aphla' ...你仍然可以看到的透明度?另外,你已经使用'paste0' *是矢量化的。 –

+0

我不完全确定问题是什么。我假设'alpha'是一个自定义函数。它没有被矢量化?为什么不?可以通过编写Vectorize(alpha)来进行矢量化吗? –

+2

尝试'grDevices :: adjustcolor'为基础的解决方案 – baptiste

回答

1

矢量不是你的问题。

添加

transparency<-round(255*0.5)#50%的α-

,并尝试

mycol_alpha <- paste0(mycol,as.hexmode(transparency))

应在plot(... , col=mycol_alpha , ...)

增加透明度不需要秤::阿尔法。