我正在ggplot中添加点的choropleth地图。 所以,以下的geom_map help docs什么时候应该使用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
参数等。没有运气。因此,我发现this question通过合并地图数据和choropleth数据并使用geom_polygon
来完成同样的工作,而且没有问题,这看起来更直接。 (我花了一段时间才开始编制ID映射,因为我没有意识到必须删除region
列名才能成功使用id
,而第一种方法的语法对我来说似乎仍然很奇怪。)
所以,两个问题:
- 它是如何可以从使用具有上述
geom_map
所示的方法不同的数据帧中添加点? - 更重要的是,使用
geom_map
而不是geom_polygon
方法有什么优势?
'geom_map'通常比'geom_polygon'快得多,因为它可以以更高效的方式进行合并。 – hadley