【发布时间】:2017-02-04 07:30:04
【问题描述】:
我正在构建世界地图,其中国家/地区的颜色填充了(连续)值,具体取决于名为 temp.sp 的数据框中的列。我想把这些地图中的几个放在一个图表中。我使用ggplot 和geom_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 生成的图形。
【问题讨论】: