首页 > 解决方案 > 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,如何实现这个情节?

在此处输入图像描述

标签: rggplot2visualization

解决方案


您需要将数据转换为长格式,然后将 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))

在此处输入图像描述


推荐阅读