【问题标题】:ggplot Map shifts when adding geom_point添加geom_point时ggplot地图发生变化
【发布时间】:2021-02-21 00:38:51
【问题描述】:

我正在尝试使用 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


【问题讨论】:

  • 你好 ZHX。我无法重现您的错误。无论有没有你的点,我都会得到相同的地图对齐方式。您从加载哪些包开始?
  • 感谢您的回复。我加载了以下软件包(如果您需要其他信息或我的数据集,请告诉我: library(dplyr) library(maps) library(mapproj) library (ggplot2) library(tidyverse) library(scales) library(leaflet) library(plyr)库(ggridges) 库(hrbrthemes) 库(fmsb) 库(radarchart) 库(forcats) 库(ggthemes)
  • 我正在运行 RStudio 1.4 和 R4.03。使用 Windows 10。
  • 在使用 geom_point 之前和使用 geom_point 之后,请查看我编辑的帖子以获取我的屏幕链接。

标签: r ggplot2 maps geom-point


【解决方案1】:

通过查看您的图像,很明显您有一个红点,位于美国东北部。您提供的示例集中没有这一点。我将模拟一个类似的异常值,但代码应该可以解决投影问题。

点集:

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, y=lat), color='red', alpha=0.15) +
    coord_map(xlim = c(-130, -65)) # Here you crop the plotting images from 130W to 65W.

【讨论】:

  • 你解决了!你是最好的!!!!非常感谢,我在这个问题上挠了很久。您能否解释一下我遇到问题的原因?
  • 我很高兴它起作用了 :) 东北点是一个异常值,它迫使地图向东延伸。在 coord_map() 的默认投影下,如此广阔的领土的矩形显示将始终显示一个“弯曲”的北美。想想那些覆盖北美和欧亚大陆的地图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-25
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多