geom_map所有子区域的颜色相同

Tyl*_*ker 3 r ggplot2 choropleth

由于ggplot2具有geom_map,我正试图从旧的映射数据方式转移到等值线.在第10-11页(这里)可以看到一个例子.

我试图用一个数据集做这个我从过去创建了一个等值线而不是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")
Run Code Online (Sandbox Code Playgroud)

为什么它显示为相同的颜色?


来自@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")
Run Code Online (Sandbox Code Playgroud)

人们可以期望通过使用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
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

因此,在多边形和数据之间的联系中,似乎正在发生一些黑魔法.这也可以解释@TylerRinker的问题.

Pau*_*tra 5

这是记录在案的行为geom_map.geom_map总是从中绘制region变量(或者id)states_map.以下证实了这一点.运行:

ny$region = ny$subregion
Run Code Online (Sandbox Code Playgroud)

subregion名称放入region列中.现在绘制导致正确的图像:

在此输入图像描述

所以,geom_map使用regionid.