空间测地线位置聚类 - ggplot2错误
spatial geodesic location clustering - ggplot2 error
我正在使用 @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()
我得到的错误是在 "fortify" 步骤 - ggplot2 doesn't know how to deal with data of class SpatialPointsDataFrame
问题是您的 shapefile 是点数据,而不是链接示例中的多边形(使用多边形作为轮廓)。 fortify()
在此上下文中用于将多边形转换为一系列顶点以在 ggplot2
中绘制,因此永远不适用于点数据。
如果您想复制他们的结果,您需要一个瑞典的多边形 shapefile 来代替示例中使用的加利福尼亚的 shapefile。
获取 GIS 形状文件的一种简单方法是使用 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()
我正在使用 @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()
我得到的错误是在 "fortify" 步骤 - ggplot2 doesn't know how to deal with data of class SpatialPointsDataFrame
问题是您的 shapefile 是点数据,而不是链接示例中的多边形(使用多边形作为轮廓)。 fortify()
在此上下文中用于将多边形转换为一系列顶点以在 ggplot2
中绘制,因此永远不适用于点数据。
如果您想复制他们的结果,您需要一个瑞典的多边形 shapefile 来代替示例中使用的加利福尼亚的 shapefile。
获取 GIS 形状文件的一种简单方法是使用 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()