【问题标题】:ggplot2 plotting coordinates on map using geom_point, unwanted lines appearing between pointsggplot2使用geom_point在地图上绘制坐标,点之间出现不需要的线
【发布时间】:2023-03-10 14:52:02
【问题描述】:

我正在尝试使用 ggplot2 在美国地图上绘制一组纬度/经度坐标,这是我的代码:

states <- map_data("state")
usamap <- ggplot(states, aes(long, lat, group=1)) +
  geom_polygon(fill = "white", colour = "black") + 
  geom_point(data = data_masks2, aes(x = lng, y = lat), alpha = 1, size = 1) +
  theme_cowplot()

但是,当我绘制 usamap 时,我发现连接一些点的奇怪线(见下文),我不确定为什么。为什么会出现这些,我该如何摆脱它们?

提前致谢

【问题讨论】:

  • 那是因为geom_polygon,如果你删除那一行,你将不会得到这些行,从你的代码的外观来看,你似乎没有geom_polygon
  • geom_polygon() 是绝对需要的。没有它,你就没有地图!它正在绘制您的状态,实际上是这里的问题,但更多的是与您发送到geom_polygon() 以绘制您的状态的信息有关。请参阅我发布的答案。

标签: r ggplot2 maps


【解决方案1】:

有一个very helpful vignette available here for creating maps,但问题在于您的geom_polygon() 行。你肯定需要这个(因为它负责绘制你的状态线),但你有 group= 审美错误。您需要设置group=group 才能正确绘制线条:

ggplot(states, aes(long, lat, group=group)) +
  geom_polygon(fill = "white", colour = "black")

如果你照常使用group=1,你会得到以下几行:

ggplot(states, aes(long, lat, group=1)) +
  geom_polygon(fill = "white", colour = "black")

为什么会这样?嗯,这就是geom_polygon()(和一般的ggplot)的工作原理。 group= 美学告诉 ggplot 什么是 geom 的“一起”。在geom_polygon() 的情况下,它告诉ggplot 需要连接哪些点集合才能绘制单个多边形 - 在这种情况下是单个状态。当您设置group=1 时,您将数据集中的每个点都分配给同一个多边形。信不信由你,带有奇怪线条的地图实际上是由一个多边形组成的,其中的点是按顺序绘制的。

查看您的states 数据集,您会看到states$group,它专门用于将属于每个州的点分组在一起。因此,我们得出了一个有点令人困惑的说法:group=group。这意味着“将group= 美学设置为statesstates$groupgroup 列的值。”

【讨论】:

  • 太棒了!非常感谢,这很有意义,并且修复工作:)
  • 我很乐意提供帮助。如果您认为这回答了您的问题,请考虑接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 2020-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
相关资源
最近更新 更多