由于ggplot2具有geom_map,我试图从旧的映射数据方式转移到等值区域。第10-11页(HERE)就是一个例子。
我正在尝试使用数据集执行此操作我从过去创建了一个等值线,而不是使用ggplot的新geom_map。这是我的尝试,我认为就像Hadely的例子,但一切都是相同的颜色。
数据集和代码:
#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的问题。
答案 0 :(得分:5)
这是geom_map
的记录行为。 geom_map
始终从region
中提取id
变量(或states_map
}。以下证实了这一点。运行:
ny$region = ny$subregion
将subregion
名称放入region
列。现在绘制导致正确的图像:
因此,geom_map
使用region
或id
。