【问题标题】:ggplot2 issue with plotting points and polygonsggplot2 绘制点和多边形的问题
【发布时间】:2018-11-28 20:58:11
【问题描述】:

我正在尝试使用 ggplot2 创建一个简单的地图来显示一系列河流流域和数据点。

数据点存储在 .csv 文件中,如下所示:

我已经投影了这些点并创建了一个 SpatialPointDataFrame,然后将它们存储在一个数据框中:

points <- read.csv(c(paste0("./Points/", "points.csv")), header = T, sep = ",")
coordinates(points) <- ~Lat + Lon
cord <- "+init=epsg:2163"
proj4string(points) <- CRS(cord)
points_df <- as.data.frame(points, region = "id")

盆地文件都存储在同一目录中,并已被读入单个空间多边形数据框,如下所示:

然后使用此转换为数据框:

basins_TX$id <- rownames(basins@data)
basins_TX_df <- tidy(basins, region = "id")

然后我尝试使用此代码创建地图:

ggplot() +
  geom_polygon(data = basins_df, 
               aes(x = long, y = lat, group = group), 
               fill = "white", color = "black") + 
  geom_point(data = points_df, 
             aes(x = Lon, y = Lat),
             color = "red")

这将创建一个带有多边形的地图,并在 0,0 处创建一个点:

无论我查看数据的哪个小节,都会发生这种情况。我想准确地显示点和多边形。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则会更容易为您提供帮助。
  • 没有看到数据,不能说。可能是错误的预测,因为盆地Longs 在 1,000,000 年代。
  • 我尝试更新问题以包含更多信息/可重复的示例。我不知道如何分享盆地 shapefile 的样本。这更有意义吗?
  • 我也认为这可能是投影问题,但两者应该在同一个投影中。 crs(points) 返回: CRS 参数: +init=epsg:2163 +proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs与问题中的 spatialpolygonsdataframe 匹配
  • 您可能希望直接仔细检查传递给 ggplot() 的数据帧,而不是原始数据集的 CRS。从图中可以看出,basins_df 的 lat & lon 值显然要大得多。也许问题出现在转换为数据框的步骤中?

标签: r ggplot2


【解决方案1】:

这个问题实际上与我的数据投影有关。我已经定义了点文件的投影而不是投影它,所以它是不正确的。我能够通过正确重新定义它并使用 spTransform 投影点文件来纠正这个问题

如果其他人遇到类似问题,请保留此内容,尽管错误不在 ggplot2 脚本中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 2017-10-23
    • 2021-12-16
    • 1970-01-01
    • 2016-04-08
    • 2013-04-20
    相关资源
    最近更新 更多