R:自动绘制具有不同Alpha的多个多边形

时间:2018-08-03 09:05:52

标签: r ggplot2 graph

假设我有一个简短的可复制示例:

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值会更聪明?

1 个答案:

答案 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)

enter image description here

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值。

enter image description here