首页 > 解决方案 > ggplot2使用geom_point在地图上绘制坐标,点之间出现不需要的线

问题描述

我正在尝试使用 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发现连接一些点的奇怪线(见下文),我不确定为什么。为什么会出现这些,我该如何摆脱它们?

在此处输入图像描述

提前致谢

标签: rggplot2maps

解决方案


这里有一个非常有用的小插图可用于创建地图,但问题在于您的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=美学设置为, 或中的group列的值。”statesstates$group


推荐阅读