plotr公共数据挖掘

R可视化——基于ggplot2和ggalluvial包绘制桑基图

2022-08-29  本文已影响0人  科研那点事儿

     \color{red}{桑基图(Sankey)}是一种特定类型的流程图,主要用于描述一组值到另一组值的流向,图中分支的宽度即对应数据流量的大小。今天,小编就结合ggplot2包和ggalluvial包给大家展现一下如何绘制一张桑基图!

安装、加载R包

主要用到两个包——ggplot2ggalluvial
rm(list=ls())
#设置工作环境
setwd("D:\\桑基图")

#下载包
install.packages("ggplot2")
install.packages("ggalluvial")
#载入包
library(ggplot2)
library(ggalluvial)

数据

1、加载数据——用于展现对应关系的数据,根据个人需求进行调整:
data <- read.table("data.txt",header = T, check.names = F)
image.png
2、格式转换——通过to_lodes_form函数将数据转换为作图所需要的数据:
df <- to_lodes_form(data[,1:ncol(data)],
                           axes = 1:ncol(data),
                           id = "value")
print(df)#预览数据
image.png

绘图

    通过PDF绘制,所以绘图前需要新建一个PDF文件然后在其中进行绘图,通过更改geom_flow函数中的 curve_type参数可以绘制不同样式的图形:
##绘制桑基图(Sankey diagram)
col<- rep(c('#2e1f54', '#52057f', '#bf033b', '#f00a36', '#ed3b21', '#ff6908', '#ffc719',
        '#598c14', '#335238', '#4a8594', '#051736', '#dbe0e3'), 3)#自定义颜色
#新建一个PDF文件
pdf("test.pdf",width = 8, height = 6)
#绘图
ggplot(df, aes(x = x, fill=stratum, label=stratum,
               stratum = stratum, alluvium  = value))+#数据
  geom_flow(width = 0.3,#连线宽度
            curve_type = "sine",#曲线形状,有linear、cubic、quintic、sine、arctangent、sigmoid几种类型可供调整
            alpha = 0.5,#透明度
            color = 'white',#间隔颜色
            size = 0.1)+#间隔宽度
  geom_stratum(width = 0.28)+#图中方块的宽度
  geom_text(stat = 'stratum', size = 2, color = 'black')+
  scale_fill_manual(values = col)+#自定义颜色
  theme_void()+#主题(无轴及网格线)
  theme(legend.position = 'none')#去除图例
dev.off()#关闭PDF
1.png
2.png
参考:https://zhuanlan.zhihu.com/p/555785174
源码及数据可在后台回复\color{red}{桑基图}获取!
上一篇下一篇

猜你喜欢

热点阅读