r - 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
发现连接一些点的奇怪线(见下文),我不确定为什么。为什么会出现这些,我该如何摆脱它们?
提前致谢
解决方案
这里有一个非常有用的小插图可用于创建地图,但问题在于您的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
列的值。”states
states$group
推荐阅读
- javascript - 如何根据单个数组元素的条件内容在 javascript 中推送整个数组?
- java - Firestore - 从文档快照 Java/Android 返回一个值
- arrays - 我在将值分配给我在 vb 中创建的数组时遇到问题。看起来很简单,但我不知道我做错了什么
- javascript - 尝试通过电子邮件发送单个 Google 表格的 PDF
- asp.net - 如何使用 http-redirect 实现单点注销
- javascript - 读取在 JS 中创建的 Laravel Blade 中的 cookie
- java - 错误 405 - 在 Java HTTP 函数调用中找不到方法
- java - 无法找到或加载主类 com.simplilearn.testing.oops.LunchNewBrowser 原因:使用 Selenium Java 的 java.lang.ClassNotFoundException 错误
- reactjs - 在 ScrollView 中放置一个包含 FlatList 的组件以进行下拉刷新?
- powerbi - 如何将 YYYYMM 转换为日期时间或数字?