在 ggplot 世界地图上修复南极洲?

Posted

技术标签:

【中文标题】在 ggplot 世界地图上修复南极洲?【英文标题】:Fix antarctica on a ggplot world map? 【发布时间】:2014-12-22 02:36:43 【问题描述】:

我想用 gpplot 绘制一个简单的世界地图,但是当我这样做时,南极洲被切断了,因为坐标不会环绕,所以路径会回到整个地图,而不是走出边缘。例如:

world_data <- map_data("world")

ggplot() + scale_y_continuous(limits=c(-90,90), expand=c(0,0)) +
scale_x_continuous(expand=c(0,0)) +
theme(axis.ticks=element_blank(), axis.title=element_blank(),
      axis.text=element_blank()) +
geom_polygon(data=world_data, mapping=aes(x=long, y=lat, group=group), fill='grey') 

生产:

但南极洲南部的大部分地区都不见了 - 它应该是这样的:

有没有简单的方法来解决这个问题?

【问题讨论】:

你认为应该如何绘制? 【参考方案1】:

maptools 包中的wrld_simpl 数据文件似乎具有更可靠的地图数据,包括一直到纬度 -90 度的南极洲的数据。例如:

library(maptools)
data(wrld_simpl)

ggplot() + 
  geom_polygon(data=wrld_simpl, 
             aes(x=long, y=lat, group=group), fill='grey20') + 
  coord_cartesian(xlim=c(-180,180), ylim=c(-90,90)) + 
  scale_x_continuous(breaks=seq(-180,180,20)) + 
  scale_y_continuous(breaks=seq(-90,90,10)) 

【讨论】:

【参考方案2】:

嗨@eipi10:设置coord_map() 时,您的代码无法正常工作。南极洲看起来很奇怪。

ggplot() + 
    geom_polygon(data=fortify(wrld_simpl), 
                 aes(x=long, y=lat, group=group), fill='grey20') + 
    coord_map(xlim=c(-180, 180), ylim=c(-90, 90)) + 
    scale_x_continuous(breaks=seq(-180, 180, 20)) + 
    scale_y_continuous(breaks=seq(-90, 90, 10)) 

实际上,我发现大多数 R 包中的内置世界地图,例如 mapdatamaptoolsmaps 不能与 coord_map() 一起正常工作。如果有人能弄清楚,非常感谢。

【讨论】:

以上是关于在 ggplot 世界地图上修复南极洲?的主要内容,如果未能解决你的问题,请参考以下文章

在d3js中寻找具有特定投影的世界地图

在ggplot中绘制地图上的饼图

我可以在地理地图上叠加 ggplot 热图吗?

如何使用 ggplot 有条件地在美国地图上着色?

改进居中县名ggplot和地图

在R ggplot2中将条形图绘制到地图上