我试图使用ggplot2在美国地图上绘制一组lat/long坐标,下面是我的代码:
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
时,我得到了连接某些点的奇怪线路(见下文),我不知道为什么。为什么会出现这些东西,我该如何摆脱它们?
提前感谢
发布于 2020-06-24 21:18:53
有一个非常有用的小插曲,可以在这里创建地图。,但问题在于您的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=
美学设置为states
或states$group
中的group
列的值”。
https://stackoverflow.com/questions/62568002
复制相似问题