【问题标题】:Overlay Polygons in ggplot2 and make the overlay transparent在ggplot2中叠加多边形并使叠加透明
【发布时间】:2013-02-05 20:33:33
【问题描述】:

我想用 ggplot 叠加几个多边形。叠加层的填充应该是透明的,但它们的边框应该是红色的。我只想看到第一个多边形的填充,所以我想使叠加层透明……但我不能让它们完全透明。不知何故,我会更容易将填充颜色定义为无填充......但我不知道该怎么做。有什么想法吗?

这里是一些重现示例的代码:

    ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))

    values <- data.frame(
      id = ids,
      value = c(3, 3.1, 3.1, 3.2, 3.15, 3.5)
    )

    positions <- data.frame(
      id = rep(ids, each = 4),
      x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3,
            0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
      y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5,
            2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
    )

    datapoly <- merge(values, positions, by=c("id"))

    p <- ggplot(datapoly, aes(x=x, y=y)) + geom_polygon(aes(fill=value, group=id))
    # overlay the same plot with red borders and transparent fill
    p <- p + geom_polygon(aes(group=id, alpha=1),colour="red",size=1.1)
    p

【问题讨论】:

    标签: r ggplot2 layer


    【解决方案1】:

    如果不想填写第二组geom_polygon,只需将fill设置为NA即可。

    ggplot(datapoly, aes(x=x, y=y)) + 
      geom_polygon(aes(fill=value, group=id)) +
      geom_polygon(aes(group=id), alpha=1,colour="red", fill=NA, size=1.1)
    

    不过,在这种情况下,您不需要两次 geom_polygon 调用

    ggplot(datapoly, aes(x=x, y=y)) + 
      geom_polygon(aes(fill=value, group=id), colour="red", size=1.1)
    

    【讨论】:

    • 谢谢。这就是我一直在寻找的。是的,你是对的,在这个例子中不需要两个多边形。我只是使用了这段代码,因为它很容易重现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多