2

我想qplot用一个向量(基于绘制的值)设置 a 中一个点的 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"上面的两个代码一样,这些点的透明度要低一些。我怎样才能做到这一点?

4

1 回答 1

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)

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

于 2013-03-06T20:37:36.193 回答