冲击图(alluvial diagram)是属于一种流程图(flow diagram) ,ggalluvial是一个基于ggplot2的扩展包,专门用于快速绘制冲击图。

下面简单给大家介绍如何用R绘制:


# 安装ggalluvial包
install.packages("ggalluvial")
library(ggalluvial)

利用majors课程安排数据集进行演示:

# 加载
library(ggalluvial)
library(ggthemes)

# 载入示例
data(majors)
majors$curriculum <- as.factor(majors$curriculum)

ggplot(majors,
       aes(x = semester, 
           stratum = curriculum, 
           alluvium = student,
           fill = curriculum, 
           label = curriculum)) +
  scale_fill_brewer(type = "qual", palette = "Set1") +
  # 添加冲击图
  geom_flow(stat = "alluvium", 
            lode.guidance = "frontback",
            color = "white") +
  theme_few() +
  # 翻转x、y轴
  coord_flip() +
  # 堆积条形图
  geom_stratum() +
  # 图例位置
  theme(legend.position = "right") +
  ggtitle("student curricula across several semesters")

如此一个简单的冲击图绘制好了,我们利用coord_flip进行了X、Y轴翻转,使图形更加方便易懂,更多内容大家可以参考官方文档。

参考资料:

1.http://corybrunson.github.io/ggalluvial/articles/ggalluvial.html