r - 如何使用 geom_polygon 的分面来生成 map 网格

标签 r ggplot2 facet

我正在尝试使用分面来生成多个填充不同值的 map 。

我创建了下面的简化示例,它重现了我想要做的事情以及我不期望从 ggplot 得到的结果。我使用美国 map 并为各州生成两个假设的社区。我可以单独绘制每个社区,但当我尝试同时分面和生成它们时,我只得到一张 map 。

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)))

理想情况下,最后一个地 block 应该有两张 map ,一张显示“A”中的社区,另一张显示“B”中的社区。相反,该图仅显示一张 map ,我什至不确定什么被映射到填充。

最佳答案

您刚刚以错误的方式指定了方面。像这样做,它会正常工作:

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

enter image description here

关于r - 如何使用 geom_polygon 的分面来生成 map 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8495441/

相关文章:

将等高线图限制为不同图的凸包

r - 将切面包裹分割为两个附加切面

r - 如何在ggplot2中制作带有自由比例尺和空间的水平多面条形图?

list - 如何将lapply与公式一起使用?

regex - R 正则表达式 : extracting speaker in a script

r - 控制 geom_line() 图表中的日期(x 轴)间隔

r - ggplot中的两行X轴标签

r - 通过 ggplot2 中的列组合分面图

r - 改变树状图的叶子

r - 存储sample()函数后剩余的数字