R中分类变量的可视化
visualization for categorical variables in R
通过以下 dataframe
:
df = data.frame(Date=1:5,
Cat1=c(1,0,1,0,0),
Cat2=c(1,1,1,0,0),
Cat3=c(0,1,1,0,1),
Cat4=c(0,0,1,1,0))
使用ggplot2
,如何实现这个情节?
您需要将数据转换为长格式,然后将 0 和 1 值转换为因子。然后,您可以使用 geom_tile
绘图,使用这些值作为填充颜色。
library(ggplot2)
ggplot(tidyr::pivot_longer(df, -1),
aes(x = Date, y = factor(name, levels = rev(unique(name))),
fill = as.factor(value))) +
geom_tile(color = "black") +
scale_fill_manual(values = c("white", "grey50")) +
labs(y = "") +
theme_void() +
theme(legend.position = "none",
axis.text = element_text(size = 15),
axis.title.x = element_text(size = 15),
plot.margin = margin(20, 20, 20, 20))
当然,对于最终情节的外观,您有很多选择。例如:
ggplot(tidyr::pivot_longer(df, -1),
aes(x = Date, y = factor(name, levels = rev(unique(name))),
fill = as.factor(value))) +
geom_tile(color = "black", size = 1) +
scale_fill_manual(values = c("gold", "deepskyblue4")) +
coord_equal() +
labs(y = "") +
theme_void() +
theme(legend.position = "none",
axis.text = element_text(size = 15),
axis.title.x = element_text(size = 15),
plot.margin = margin(20, 20, 20, 20))
通过以下 dataframe
:
df = data.frame(Date=1:5,
Cat1=c(1,0,1,0,0),
Cat2=c(1,1,1,0,0),
Cat3=c(0,1,1,0,1),
Cat4=c(0,0,1,1,0))
使用ggplot2
,如何实现这个情节?
您需要将数据转换为长格式,然后将 0 和 1 值转换为因子。然后,您可以使用 geom_tile
绘图,使用这些值作为填充颜色。
library(ggplot2)
ggplot(tidyr::pivot_longer(df, -1),
aes(x = Date, y = factor(name, levels = rev(unique(name))),
fill = as.factor(value))) +
geom_tile(color = "black") +
scale_fill_manual(values = c("white", "grey50")) +
labs(y = "") +
theme_void() +
theme(legend.position = "none",
axis.text = element_text(size = 15),
axis.title.x = element_text(size = 15),
plot.margin = margin(20, 20, 20, 20))
当然,对于最终情节的外观,您有很多选择。例如:
ggplot(tidyr::pivot_longer(df, -1),
aes(x = Date, y = factor(name, levels = rev(unique(name))),
fill = as.factor(value))) +
geom_tile(color = "black", size = 1) +
scale_fill_manual(values = c("gold", "deepskyblue4")) +
coord_equal() +
labs(y = "") +
theme_void() +
theme(legend.position = "none",
axis.text = element_text(size = 15),
axis.title.x = element_text(size = 15),
plot.margin = margin(20, 20, 20, 20))