Matlab进阶绘图第31期—桑基图(Sankey Chart)

桑基图(Sankey Chart)本质为一种流程图,可以很好地展示数据的层次结构以及流量变化

桑基图主要由节点块与流动路径线组成

其中,节点块用于表示类别流动路径线除了可以直观地表示流动的方向,其宽度还代表着流量/数量的大小

由于Matlab中未收录桑基图的绘制函数,因此需要大家自行解决。

本文使用改进后的plotSankeyFlowChart工具(Carlos Borau, MathWork, 2021)-SankeyChart,进行桑基图的绘制,先来看一下成品效果:

Matlab进阶绘图第31期—桑基图(Sankey Chart)_第1张图片

特别提示:本期内容『数据+代码』已上传资源群中,加群的朋友请自行下载。有需要的朋友可以关注同名公号【阿昆的科研日常】,后台回复关键词【绘图桶】查看加入方式


1. 数据准备

此部分主要是读取原始数据并初始化绘图参数

% 读取数据tbl = readtable('data.xlsx');% 转换分类数组tbl.Age = categorical(tbl.Age);tbl.Treatment = categorical(tbl.Treatment);tbl.Surgery = categorical(tbl.Surgery);tbl.Result = categorical(tbl.Result);% 初始化绘图参数data = tbl;

2. 颜色定义

作图不配色就好比做菜不放盐,总让人感觉少些味道。

但颜色搭配比较考验个人审美,需要多加尝试。

这里直接使用TheColor配色工具中的SCI权威配色库

%% 颜色定义N = 16; % N = 层数 * max(每层子单元数量), 4*max([4 3 2 3])map = TheColor('sci',508);map = map(1:16,:);

Matlab进阶绘图第31期—桑基图(Sankey Chart)_第2张图片

3. 桑基图绘制

调用‘SankeyChart’命令,绘制初始桑基图

% 参数设置options.figureWidth = 15;         % 图片宽度(cm)options.figureHeight = 14;        % 图片高度(cm)options.color_map = map;          % 配色options.flow_transparency = 0.7;  % 流动路径线透明度options.show_perc = false;        % 是否显示节点块占比options.text_color = [0 0 0];     % 文字颜色options.show_layer_labels = true; % 是否坐标底部显示层名称options.show_cat_labels = true;   % 是否在节点块显示分类名称options.show_legend = false;      % 是否显示图例% 绘图SankeyChart(data,options);

4. 图像导出

最后,以期刊所需分辨率、格式输出图片。

%% 图片输出exportgraphics(gca,'test.png','Resolution',300)

Matlab进阶绘图第31期—桑基图(Sankey Chart)_第3张图片

以上。

你可能感兴趣的:(Matlab插图,matlab,开发语言,论文插图,可视化)