gpt4 book ai didi

r - ggplot2中具有Choropleth映射的网格

转载 作者:行者123 更新时间:2023-12-04 10:39:33 27 4
gpt4 key购买 nike

使用Hadley的出色的ggplot2和他的书(第78-79页),我可以使用以下代码轻松生成单个Choropleth映射图:

states.df <- map_data("state")
states.df = subset(states.df,group!=8) # get rid of DC
states.df$st <- state.abb[match(states.df$region,tolower(state.name))] # attach state abbreviations

states.df$value = value[states.df$st]

p = qplot(long, lat, data = states.df, group = group, fill = value, geom = "polygon", xlab="", ylab="", main=main) + opts(axis.text.y=theme_blank(), axis.text.x=theme_blank(), axis.ticks = theme_blank()) + scale_fill_continuous (name)
p2 = p + geom_path(data=states.df, color = "white", alpha = 0.4, fill = NA) + coord_map(project="polyconic")

其中“值”是我正在绘制的状态级别数据的向量。但是,如果我想绘制多个 map (按某个变量(或两个)分组)怎么办?

这是关于各州卫生保健意见的 plot done by Andrew Gelman, later adapted in the New York Times的示例:

我希望能够模仿此示例:显示根据两个变量(甚至一个)栅格化的Choropleth图。因此,我不是传递值的向量,而是传递一个组织为“long”的数据框,每个状态有多个条目。

我知道ggplot2可以做到这一点,但是我不确定如何做到。谢谢!

最佳答案

您可以为所需的分组添加两列,并使用构面:

library(ggplot2)
library(maps)
d1 <- map_data("state")
d2 <- unique(d1$group)
n <- length(d2)
d2 <- data.frame(
group=rep(d2,each=6),
g1=rep(1:3,each=2,length=6*n),
g2=rep(1:2,length=6*n),
value=runif(6*n)
)
d <- merge(d1, d2, by="group")
qplot(
long, lat, data = d, group = group,
fill = value, geom = "polygon"
) +
facet_wrap( ~ g1 + g2 )

关于r - ggplot2中具有Choropleth映射的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com