【问题标题】:spatial geodesic location clustering - ggplot2 error空间测地线位置聚类 - ggplot2错误
【发布时间】:2015-05-23 08:08:50
【问题描述】:

我正在使用@jlhoward 之前在Approaches for spatial geodesic latitude longitude clustering in R with geodesic or great circle distances 发布的代码

但是,我正在尝试为瑞典实施同样的事情。当我加载 shp 文件时,我从 ggplots 收到错误消息。我该如何解决这个问题?我的代码如下:

map.SE  <- readOGR(dsn="sweden-latest", layer="places")
map.df  <- fortify(map.SE)

ggplot(map.df)+
  geom_path(aes(x=long, y=lat, group=group))+
  geom_point(data=df, aes(x=long, y=lat, color=factor(clust)), size=4)+
  scale_color_discrete("Cluster")+
  coord_fixed()

我得到的错误是在“强化”步骤 - ggplot2 doesn't know how to deal with data of class SpatialPointsDataFrame

【问题讨论】:

  • 实际上 grom_point 中的数据 'df' 是另一个包含集群和纬度/经度的数据集。我使用了我提到的另一篇文章中的确切代码(问题中的链接)。无论如何,我在 ggplot 之前的强化步骤中遇到的错误
  • 有什么方法可以提供 shapefile?
  • 是的 - 我从这里下载 - download.geonames.org/export/zip/SE.zip
  • 我看到两个文本文件,但不是 shapefile。
  • 抱歉,提供了错误的链接。这是正确的文件 - filedropper.com/sweden-places-shape

标签: r ggplot2 cluster-analysis


【解决方案1】:

获取 GIS shapefile 的一种简单方法是使用 raster 包。您可以下载 GADM 数据。然后,以后就可以做各种ggplot业务了。如您所愿,例如,您可以使用geom_point() 添加点。

library(raster)
library(ggplot2)

sweden <- getData("GADM", country = "Sweden", level = 1)
map <- fortify(sweden)

ggplot() + 
geom_map(data = map, map = map, aes(x = long, y = lat, map_id = id, group = group)) +
coord_map()

【讨论】:

  • 谢谢!这看起来是我尝试过的所有方法中最好的,包括基于谷歌地图的图片。你能帮我在这张地图上绘制数据吗?我有集群的经纬度数据库。
  • 现在可以使用了。完成后将共享代码。谢谢!
  • @PreritAhuja Glas 听到这个消息!
【解决方案2】:

问题在于您的 shapefile 是点数据,而不是链接示例中的多边形(使用多边形作为轮廓)。 fortify() 在此上下文中用于将多边形转换为一系列顶点,以便在 ggplot2 中进行绘图,因此永远不适用于点数据。

如果您想复制他们的结果,您需要瑞典的多边形 shapefile 来代替示例中使用的加利福尼亚形状文件。

【讨论】:

  • 非常感谢!让我找到多边形 shapefile 并尽快确认。
猜你喜欢
  • 2016-06-16
  • 2013-07-17
  • 1970-01-01
  • 2014-02-01
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多