我根据名为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个绘图文件运行多色时,需要很长时间。
我认为我可以使用gSimplify
等代码使用world.simp <- gSimplify(world, tol = .1, topologyPreserve = TRUE)
简化世界地图,从而加快打印速度。结果数据框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 $值转换为factor,但它没有任何区别。
总而言之,使用gSimplified地图会导致显示使用ggplot和geom_map生成的图形失败。
答案 0 :(得分:0)
我没有尝试弄清楚gSimplify出了什么问题,而是从http://geojson.xyz找到并下载了较低分辨率的地图。我目前正在使用的是 https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_110m_admin_0_countries.geojson
请注意,它具有类似的文件名,但是使用110米而不是50米。