如何解决添加geom_point时ggplot地图会发生变化
我正在尝试使用 ggplot 并在我的纬度/经度点中进行分层来创建地图。
我毫无问题地创建了美国地图,但是当我在 geom_point lat/lon 位置分层时,美国地图会缩小并发生变化。有人可以指出我为什么会这样吗?
stateData <- map_data('state')
head(stateData)
us <- fortify(stateData,region = 'region')
gg <- ggplot() + geom_map(data = us,map = us,aes(x = long,y = lat,map_id = region,group = group),fill = 'white',color = 'black',size = 0.25) +
coord_map('albers',lat0 = 39,lat1 = 45) +
theme_map()
gg + #add the data points with lon/lat declaring the columns
geom_point(data=new_datav2,aes(x=lon,y=lat),color='red',alpha=0.15)
postalCode county lat lon
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94612 Alameda County 37.80508041 -122.2730713
94002 San Mateo County 37.51834106 -122.276207
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94612 Alameda County 37.80508041 -122.2730713
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94102 San Francisco County 37.77711868 -122.4196396
94063 San Mateo County 37.48450089 -122.2277222
94102 San Francisco County 37.77711868 -122.4196396
94596 Contra Costa County 37.90118027 -122.0616226
94102 San Francisco County 37.77711868 -122.4196396
94704 Alameda County 37.86988068 -122.2705383
94612 Alameda County 37.80508041 -122.2730713
解决方法
通过查看您的图像,很明显您有一个位于美国东北部的红点。您提供的示例集中没有这一点。我将模拟一个类似的异常值,但代码应该可以解决投影问题。
点集:
df_points <-
structure(list(
postalCode = c(94102,94612,94102,94063,0),County = c("San Francisco County","Alameda County","San Francisco County","San Mateo County","This_is_the_outlier"),lat = c(37.77711868,37.80508041,37.77711868,37.48450089,40),lon = c(-122.4196396,-122.2730713,-122.4196396,-122.2277222,-10)),row.names = c(NA,-5L),class = c("tbl_df","tbl","data.frame"))
映射道具:
library(tidyverse)
library(maps)
library(mapproj)
library(ggthemes)
us <- fortify(stateData,region = 'region')
gg <- ggplot() +
geom_map(data = us,map = us,aes(x = long,y = lat,map_id = region,group = group),fill = 'white',color = 'black',size = 0.25) +
coord_map('albers',lat0 = 39,lat1 = 45) +
theme_map()
第一个选择,过滤异常值。
gg + #add the data points with lon/lat declaring the columns
geom_point(data=df_points %>% filter(lon < -65),## Here is where you filer the eastern outlier by excluding all data east of longitude 65W.
aes(x=lon,y=lat),color='red',alpha=0.15)
第二种选择,限制绘图的水平范围。
gg + #add the data points with lon/lat declaring the columns
geom_point(data=df_points,aes(x=lon,alpha=0.15) +
coord_map(xlim = c(-130,-65)) # Here you crop the plotting images from 130W to 65W.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。