数据可视化:使用 ggplot2 和 facet 布局的地图
Data visualization: Maps using ggplot2 and facet layout
我想使用 R
创建条件微图。基本上我想在下面的示例 p_1、p_2、q_1、q_2) 中为四个不同的变量创建一个方面(网格布局)并绘制每个状态图颜色编码 1 代表蓝色,0 代表绿色。
下面是示例代码。用于颜色编码的数据是 "mydata",对于每个变量 p_1、p_2、q_1、[=23,绿色为 0,黑色为 1 =] 我将如何使用 ggplot 完成此操作。
library(ggplot2)
library(maps)
library(scales) # for function alpha()
us.dat <- map_data("state")
ggplot(us.dat, aes(x=long, y=lat, group=group)) + geom_polygon(fill="grey65", colour = alpha("white", 1/2), size = 0.2) +
theme_bw() + theme(legend.position = "none", text = element_blank(), line = element_blank()) + coord_map("polyconic")
# create random data
states <- unique(us.dat$region)
p_1 <- sample(0:1,49,replace=T)
p_2 <- sample(0:1,49,replace = T)
q_1 <- sample(0:1,49,replace=T)
q_2 <- sample(0:1,49,replace = T)
mydata <- as.data.frame(t(rbind(states,p_1,p_2,q_1,q_2)))
下面的图表布局是我想用一个常见的图例完成的。
您需要重新格式化您的数据,使其成为长格式,并且您的变量由一个键标识。然后您需要将其与空间数据合并。然后使用facet_wrap(~ key)
创建四个面板。
试试这个:
library(dplyr)
library(tidyr)
us.dat %>%
dplyr::left_join(
mydata %>%
tidyr::gather(key, value, -states),
by = c("region" = "states")
) %>%
ggplot(aes(x=long, y=lat)) +
geom_polygon(aes(group=group, fill = value),
colour = alpha("white", 1/2),
size = 0.2) +
theme_bw() +
theme(# legend.position = "none",
line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
strip.background = element_blank(),
panel.border = element_blank()
) +
coord_map("polyconic") +
facet_wrap(~ key)
我添加了一些主题元素以使其看起来与您想要的相似。
您将需要使用 scale_fill_manual()
来获得您想要的颜色。
我想使用 R
创建条件微图。基本上我想在下面的示例 p_1、p_2、q_1、q_2) 中为四个不同的变量创建一个方面(网格布局)并绘制每个状态图颜色编码 1 代表蓝色,0 代表绿色。
下面是示例代码。用于颜色编码的数据是 "mydata",对于每个变量 p_1、p_2、q_1、[=23,绿色为 0,黑色为 1 =] 我将如何使用 ggplot 完成此操作。
library(ggplot2)
library(maps)
library(scales) # for function alpha()
us.dat <- map_data("state")
ggplot(us.dat, aes(x=long, y=lat, group=group)) + geom_polygon(fill="grey65", colour = alpha("white", 1/2), size = 0.2) +
theme_bw() + theme(legend.position = "none", text = element_blank(), line = element_blank()) + coord_map("polyconic")
# create random data
states <- unique(us.dat$region)
p_1 <- sample(0:1,49,replace=T)
p_2 <- sample(0:1,49,replace = T)
q_1 <- sample(0:1,49,replace=T)
q_2 <- sample(0:1,49,replace = T)
mydata <- as.data.frame(t(rbind(states,p_1,p_2,q_1,q_2)))
下面的图表布局是我想用一个常见的图例完成的。
您需要重新格式化您的数据,使其成为长格式,并且您的变量由一个键标识。然后您需要将其与空间数据合并。然后使用facet_wrap(~ key)
创建四个面板。
试试这个:
library(dplyr)
library(tidyr)
us.dat %>%
dplyr::left_join(
mydata %>%
tidyr::gather(key, value, -states),
by = c("region" = "states")
) %>%
ggplot(aes(x=long, y=lat)) +
geom_polygon(aes(group=group, fill = value),
colour = alpha("white", 1/2),
size = 0.2) +
theme_bw() +
theme(# legend.position = "none",
line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
strip.background = element_blank(),
panel.border = element_blank()
) +
coord_map("polyconic") +
facet_wrap(~ key)
我添加了一些主题元素以使其看起来与您想要的相似。
您将需要使用 scale_fill_manual()
来获得您想要的颜色。