美文网首页plotr公共数据挖掘
R可视化——基于ggplot2和ggalluvial包绘制桑基图

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

作者: 科研那点事儿 | 来源:发表于2022-08-29 11:00 被阅读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}{桑基图}获取!

    相关文章

      网友评论

        本文标题:R可视化——基于ggplot2和ggalluvial包绘制桑基图

        本文链接:https://www.haomeiwen.com/subject/kpvhnrtx.html