假设我有一个简短的可复制示例:
d=data.frame(x=c(1,2,2, 3,4,4), y=c(1,1,2, 2,2,3), t=c('a', 'a', 'a', 'b', 'b', 'b'))
p <- ggplot() +
geom_polygon(data=d, mapping=aes(x=x, y=y, group=t))
p
产生两个三角形。但是,我将有一个包含更多这些的data.frames。我想使用递减的“ Alpha”参数自动绘制它们。有没有办法在循环中做到这一点(我也不需要group参数),或者以某种方式在data.frame中定义alpha值会更聪明?
答案 0 :(得分:4)
我会在alpha
中定义一个d
列,然后将其映射到alpha
内部的aes
美感。
例如:
d <- data.frame(
x = c(1, 2, 2, 3, 4, 4),
y = c(1, 1, 2, 2, 2, 3),
t = c('a', 'a', 'a', 'b', 'b', 'b'),
alpha = rep(1:2, each = 3))
ggplot(d, aes(x, y, group = t, alpha = alpha)) +
geom_polygon() +
scale_alpha_continuous(range = c(0.4, 0.8), guide = F)
d$alpha
的顺序确定阴影,您可以使用scale_alpha_continuous
设置其范围。在这种情况下,alpha
最低的多边形具有alpha = 0.4
,而alpha
最高的多边形具有alpha = 0.8
。
@Axeman指出,您还可以考虑使用scale_alpha_identity
,它需要直接在alpha
中使用“可翻译的” d
值
d <- data.frame(
x = c(1, 2, 2, 3, 4, 4),
y = c(1, 1, 2, 2, 2, 3),
t = c('a', 'a', 'a', 'b', 'b', 'b'),
alpha = rep(c(0.1, 0.9), each = 3))
ggplot(d, aes(x, y, group = t, alpha = alpha)) +
geom_polygon() +
scale_alpha_identity()
在这里,第一个多边形为alpha = 0.1
,第二个为alpha = 0.9
。请注意,这要求您为所有多边形预先计算alpha
值。