2014-03-24 61 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 , ...)

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