由于 ggplot2 具有 geom_map,我正在尝试从旧的映射数据方式转移到等值线。示例见第 10-11 页(此处)。
我正在尝试使用我过去创建的 choropleth 的数据集来执行此操作,而不是使用 ggplot 的新 geom_map。这是我的尝试,我认为它就像哈德利的例子,但一切都是相同的颜色。
数据集和代码:
#loads 2 data frames: ny and cad from my drop box
load(url("http://dl.dropbox.com/u/61803503/MAPPING.RData"))
library(ggplot2)
ggplot(cad, aes(map_id = subregion)) +
geom_map(aes(fill = Math_Pass_Rate), map = ny) +
expand_limits(x = ny$long, y = ny$lat) +
guides(fill = guide_colorbar(colours = topo.colors(10))) +
opts(legend.position = "top")
为什么它显示为相同的颜色?
来自@PaulHiemstra 的附加信息
我对此有点困惑,并没有得到好的结果。但是,我也想知道为什么您链接到的 ggplot2 pdf 中的示例有效。
此代码生成正确的等值线图。
crimes <- data.frame(state = tolower(rownames(USArrests)), USArrests)
states_map <- map_data("state")
ggplot(crimes, aes(map_id = state)) +
geom_map(aes(fill = Murder), map = states_map) +
expand_limits(x = states_map$long, y = states_map$lat) +
guides(fill = guide_colorbar(colours = topo.colors(10))) +
opts(legend.position = "top")
人们会期望通过使用,在(多边形)中的列和( ) 中的map_id = state
列之间建立了链接。包含一列:states_map
crimes
Murder
crimes
state
> head(crimes)
state Murder Assault UrbanPop Rape
Alabama alabama 13.2 236 58 21.2
Alaska alaska 10.0 263 48 44.5
Arizona arizona 8.1 294 80 31.0
Arkansas arkansas 8.8 190 50 19.5
California california 9.0 276 91 40.6
Colorado colorado 7.9 204 78 38.7
但states_map
没有:
> head(states_map)
long lat group order region subregion
1 -87.46201 30.38968 1 1 alabama <NA>
2 -87.48493 30.37249 1 2 alabama <NA>
3 -87.52503 30.37249 1 3 alabama <NA>
4 -87.53076 30.33239 1 4 alabama <NA>
5 -87.57087 30.32665 1 5 alabama <NA>
6 -87.58806 30.32665 1 6 alabama <NA>
所以在多边形和数据之间的链接中,一些黑魔法似乎正在发生。这也可以解释@TylerRinker 的问题。