【问题标题】:Plot ggplot polygons with holes with geom_polygon用 geom_polygon 绘制带有孔的 ggplot 多边形
【发布时间】:2016-10-06 03:30:19
【问题描述】:

questionsggplot2 无法绘制具有的多边形形状。

这是因为,如果点的顺序不正确,则最终图看起来很糟糕,通常在甜甜圈形状内带有剪裁/修剪线。

我已经阅读了很多关于订单的重要性的信息,但我无法向前迈进。 我有一个 SpatialPolygonsDataFrame 有 26 个功能(来自 raster::rasterToPolygons(dissolve=T)),我想用 ggplot 绘制它。

这就是发生的事情-

r3.pol <- rasterToPolygons(r3, dissolve=T)
r3.df <- fortify(r3.pol)
names(r3.df) <- c('x','y','order','hole','piece','ID','group')
p <- ggplot(r3.df)
p <- p + geom_polygon(mapping=aes(x=x,y=y,group=ID), fill='red')
p <- p + coord_equal()

我看到了这个输出:

虽然应该是这样,但plot(r3.pol)

我怎样才能做到这一点? 我尝试了几个小时,但无法重新排序 r3.df。 另外,r3.df$hole 中的信息对您有帮助吗?它是由函数fortify 返回的孔点(我认为)。

附带问题:我怎样才能给你我的 r3.pol SpatialPolygonsDataFrame,让你自己试试?我记得在这里看到过长的、可重现的对象“转储”,但我不知道该怎么做。

saved 多边形数据框here。无法使用dput 保存它,抱歉。您可以使用load 获取它。

【问题讨论】:

  • 您不需要提供整个数据框。只是一个带有几个单独多边形的较小样本。将dput(dataSample) 的输出粘贴到您的问题中。
  • @eipi10 就是这样!但是我在使用它时遇到了麻烦。它似乎不适用于 SpatialPolygonsDataFrame。如果我在 r3.df 上使用它,即使使用二次采样,它仍然是一个巨大的转储。我想我会在那里使用一些日志提供程序。
  • 我会说为地图放弃 ggplot2 并使用 package:tmap - 处理漏洞,不再需要 fortify 一切。

标签: r plot ggplot2 sp


【解决方案1】:

我建议安装包“ggpolypath”并使用geom_polypath 而不是geom_polygon。对我有用。

【讨论】:

    【解决方案2】:

    我的临时解决方案是:@#$% 多边形,并使用 raster 包。

    即:

    r <- raster(x=extent(r3.pol), crs=crs(r3.pol)) # empty raster from r3.pol
    res(r) <- 250 # set a decent resolution (depends on your extent)
    r <- setValues(r, 1) # fill r with ones
    r <- mask(r, r3.pol) # clip r with the shape polygons
    

    现在像使用rasterggplot 一样绘制它。 rasterVis 包在这里可能会有所帮助,但我没有使用它,所以:

    rdf <- data.frame(rasterToPoints(r))
    p <- ggplot(rdf) + geom_raster(mapping=aes(x=x, y=y), fill='red')
    p <- p + coord_equal()
    

    到此为止。

    或者,您可以使用rasterize 创建栅格,因此栅格将保存多边形值(在我的情况下,只是一个整数):

    r <- raster(x=extent(r3.pol), crs=crs(r3.pol))
    res(r) <- 250
    r <- rasterize(r3.pol, r)
    
    rdf <- data.frame(rasterToPoints(r))
    p <- ggplot(rdf) + geom_raster(mapping=aes(x=x, y=y, fill=factor(layer)))
    p <- p + coord_equal()
    

    如果有人为geom_polygon 提出了一个不错的解决方案,可能涉及重新排序多边形数据框,我会很乐意考虑。

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多