【发布时间】: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 值显然要大得多。也许问题出现在转换为数据框的步骤中?