我正在制作一个在 ggplot 中添加点的等值线图。因此,按照geom_map 帮助文档的最后一个示例
我想出了这个:
require(ggplot2)
require(maps)
set.seed(47)
county_map <- map_data("county", "washington")
names(county_map)[5:6] <- c("state", "id")
countyData <- data.frame(id = unique(county_map$id), value = rnorm(39))
map1 <- ggplot(countyData, aes(map_id = id)) +
geom_map(aes(fill = value), map = county_map, colour = "black") +
coord_map() +
expand_limits(x = county_map$long, y = county_map$lat)
print(map1)
这对等值线图很有用。(除此之外,我对这个map_data
功能很兴奋。)但后来我尝试加分
pointData <- structure(list(xx = c(-119.872483243387, -122.809038239929,
-122.143143065312
), yy = c(48.1320425447619, 46.7352071436801, 47.9911548514037
)), .Names = c("xx", "yy"), row.names = c(1746L, 7281L, 2692L
), class = "data.frame")
map1 + geom_point(mapping = aes(xx, yy), data = pointData)
我无法让它工作。我尝试了很多变体,设置group
为NULL
,命名aes
参数等。没有运气。所以我发现这个问题通过将地图数据与 choropleth 数据合并并使用 来完成完全相同的事情而没有问题,geom_polygon
无论如何这似乎更简单。(首先我花了一点时间来计算 ID 映射,因为我没有意识到我必须删除region
列名才能成功使用id
. 而且第一种方法的语法对我来说仍然很奇怪。)
所以,两个问题:
- 如何使用上面显示的方法从不同的数据框中添加点
geom_map
? geom_map
更重要的是,与该geom_polygon
方法相比,使用有什么优势吗?