qplot alpha值作为向量

时间:2013-03-06 20:17:08

标签: r transparency alpha ggplot2

我想设置qplot中带有矢量的点的alpha值(基于绘制的值)。

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矢量时没有区别:

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

我希望dsamp$clarity!="I1"的点与上面的两个代码一样具有更低的透明度。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

我会使用ggplot()并将alpha映射到clarity。然后,您可以手动设置每个因素级别所需的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)

据我所知,给你你想要的东西。显然,您可以在创建I1时为alpha设置不同的级别。