如下所示,我使用ggplots制作的地图存在一些奇怪的显示问题。似乎任何投影方式都会出现同样的问题。
以下是代码:
只需要安装maps
和ggplot2
这两个包即可。
mapWorld <- borders("world", colour="gray50", fill="black")
ggplot() + mapWorld +
coord_map("mercator") +
ylim(-90,90)
显然,问题是由于多边形跨越了0坐标引起的,这是世界合并的地方。 R不知道如何关闭这些多边形,并将它们投影到全球各地。
该方法重新创建多边形并防止其跨越0坐标(xlim和ylim)。 它适用于任何类型的投影。
require(ggplot2)
require(PBSmapping)
require(data.table)
mapWorld <- map_data("world")
setnames(mapWorld, c("X","Y","PID","POS","region","subregion"))
worldmap = clipPolys(mapWorld, xlim=xlim,ylim=ylim, keepExtra=TRUE)
ggplot() + geom_polygon(data = mapWorld, aes(X,Y,group=PID))
Error in .clip(polys, xlim, ylim, isPolygons = TRUE, keepExtra) : (list) 对象无法强制转换为 'double' 类型
。 - Johan Larssonggplot() + mapWorld +
coord_map("mercator") +
ylim(-90,90)
如果你只使用
ggplot() + mapWorld
它工作得非常完美。
summary(mapWorld$data)
时,经度的编码范围似乎是从-179到190... 我本来期望的是-180到180。 - Gregor Thomas?border
底部的示例对我来说完全正常。我99%确定这是数据问题,而不是ggplot问题。 - Gregor Thomas?borders
示例对我也很有效。这很奇怪,因为有些人使用borders("world", ...)
而没有提到这个问题。 - ePoQ+coord_equal
添加到绘图中似乎可以解决问题。但我不会将其发布为答案,因为我不确定它是否是一个解决方案,即coord_map()
中的投影规范是否足够? - shekeine