【问题标题】:r geom_map fails with GeoJSON map simplified with gSimplifyr geom_map 使用 gSimplify 简化的 GeoJSON 地图失败
【发布时间】:2017-02-04 07:30:04
【问题描述】:

我正在构建世界地图,其中国家/地区的颜色填充了(连续)值,具体取决于名为 temp.sp 的数据框中的列。我想把这些地图中的几个放在一个图表中。我使用ggplotgeom_map 构造每个地图,然后使用multiplot() 构造和显示图形,它使用grid 代码。

我正在使用 GeoJSON 地图 (world <- readOGR(dsn = "ne_50m_admin_0_countries.geojson", layer = "OGRGeoJSON"))。生成的 SpatialPolygonsDataFrame 为 4.1 Mb,从 worldMap <- broom::tidy(world, region = "iso_a3") 生成的数据帧有 93391 行。因此,当我使用 4 个绘图文件运行 multiplot 时,需要很长时间。

我认为我可以通过使用world.simp <- gSimplify(world, tol = .1, topologyPreserve = TRUE) 之类的代码简化带有gSimplify 的世界地图来加快打印速度。生成的数据框 worldMap.simp 只有 27033 行,但是当我使用此地图时,我收到错误消息 Error in unit(x, default.units) : 'x' and 'units' must have length > 0

当我使用 worldMap.simp 运行此代码时会生成错误消息。当我使用 worldMap 时,我没有任何问题。

gg <- ggplot(temp.sp, aes(map_id = id)) gg <- gg + geom_map(aes(fill = temp.sp$value), map = worldMap.simp, color = "white")

我尝试将 temp.sp$value 转换为因子,但没有任何区别。

总而言之,使用 gSimplified 地图会导致无法显示使用 ggplot 和 geom_map 生成的图形。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    我没有试图找出 gSimplify 出了什么问题,而是从http://geojson.xyz 找到并下载了一张分辨率较低的地图。我目前使用的是 https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_0_countries.geojson

    请注意,它具有相似的文件名,但使用 110m 而不是 50m。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多