2013-03-06 27 views
2

我想用矢量(基於繪製的值)設置qplot中某點的阿爾法值。qplot阿爾法值作爲一個向量

library(ggplot2) 
dsamp <- diamonds[sample(nrow(diamonds), 1000), ] 
alpha = rep(.8,nrow(dsamp)); alpha[dsamp$clarity=="I1"] <- 1 
qplot(carat, price, data=dsamp, colour=clarity,size=I(4),alpha=alpha) 

當我執行如上述的碼,也沒有差別,當我創建阿爾法矢量是這樣的:

alpha = rep(.1,nrow(dsamp)); alpha[dsamp$clarity=="I1"] <- 1 

欲用於與dsamp$clarity!="I1"點有一些不透明度以兩者的上面的代碼。我怎樣才能做到這一點?

回答

2

我會用ggplot()和地圖alphaclarity。然後,您可以手動設置每個級別的因子所需的alpha的值。

levels(dsamp$clarity) 
[1] "I1" "SI2" "SI1" "VS2" "VS1" "VVS2" "VVS1" "IF" 
alpha <- c(1, rep(0.25, times=(length(levels(dsamp$clarity))-1))) 
names(alpha) <- levels(dsamp$clarity) 
alpha 
    I1 SI2 SI1 VS2 VS1 VVS2 VVS1 IF 
0.5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 

然後,您可以:

ggplot(dsamp, aes(carat, price)) + geom_point(aes(alpha=clarity, colour=clarity), size=I(4)) + 
    scale_alpha_manual(values=alpha) 

其中,據我所知,給你想要的東西。當您創建alpha時,您顯然可以爲I1設置不同的級別。

+0

謝謝!正是我所搜索的! – leo 2013-03-06 21:04:31