6

ファセットを使用して、異なる値で満たされた複数のマップを生成しようとしています。

以下の簡単な例を作成しました。これは、私がやろうとしていることと、ggplot から期待しない結果の両方を再現しています。米国の地図を使用して、州ごとに 2 つの仮想コミュニティを生成します。各コミュニティを個別にプロットできますが、ファセットと生成を同時に行おうとすると、マップが 1 つしか得られません。

require(ggplot2)
require(maps)

map <- map_data("state")
states <- unique(map$region)

# generate some hypothetical communities    
runA <- data.frame(region=states, id="A",
                   community=rbinom(length(states),1,.5))
runB <- data.frame(region=states, id="B",
                   community=rbinom(length(states),1,.5))

membership <- rbind(runA, runB)

# plot an individual map of communities from run A
df <- merge(map, runA, by="region")
ggplot(df) +
  aes(long, lat, group=group) +
  coord_equal() +
  geom_polygon(aes(fill = as.factor(community)))

# likewise for B
df <- merge(map, runB, by="region")
ggplot(df) +
  aes(long, lat, group=group) +
  coord_equal() +
  geom_polygon(aes(fill = as.factor(community)))

# now instead do one plot with two maps from facetting on id
df <- merge(map, membership, by="region")
ggplot(df) +
  aes(long, lat, group=group, facets= id ~.) +
  coord_equal() +
  geom_polygon(aes(fill = as.factor(community)))

理想的には、最後のプロットには 2 つのマップが必要です。1 つはコミュニティを「A」に、もう 1 つはコミュニティを「B」に示します。代わりに、プロットには 1 つのマップしか表示されず、塗りつぶしに何がマップされているかさえわかりません。

4

1 に答える 1

8

ファセットを間違った方法で指定しただけです。代わりに次のようにすると、うまくいきます。

ggplot(df) +
  aes(long, lat, group=group) +
  coord_equal() +
  geom_polygon(aes(fill = as.factor(community))) +
  facet_grid(facets= id ~.)

ここに画像の説明を入力

于 2011-12-13T20:15:47.270 に答える