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

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

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

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

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

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

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


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,:);

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)

以上。

好的,你想要了解如何使用R语言绘制桑基图Sankey Diagram)是吗?在R语言中,你可以使用`networkD3`包来创建桑基图。 首先,你需要安装`networkD3`包。你可以使用以下代码来安装: ```R install.packages("networkD3") ``` 安装完成后,你可以加载该包: ```R library(networkD3) ``` 接下来,你需要准备桑基图所需的数据。通常,桑基图的数据是一个节点(节点名)和连接(源节点和目标节点)的列表。例如,考虑以下示例数据: ```R # 创建节点和连接数据 nodes <- data.frame(name = c("A", "B", "C", "D", "E")) links <- data.frame( source = c(1, 1, 2, 3), target = c(2, 3, 4, 5), value = c(10, 15, 5, 20) ) ``` 上述代码中,我们创建了一个包含5个节点的数据框,并创建了一个包含4个连接的数据框。每个连接都有一个源节点索引(source)、目标节点索引(target)和值(value)。 接下来,你可以使用`sankeyNetwork()`函数创建桑基图: ```R # 创建桑基图 sankeyNetwork( Links = links, Nodes = nodes, Source = "source", Target = "target", Value = "value", NodeID = "name" ) ``` 上述代码中,我们将连接数据和节点数据作为函数的输入,并指定连接数据中源节点和目标节点的列名,以及值的列名和节点的列名。 这样就可以绘制出桑基图了。你可以根据具体的需求进行自定义,例如添加标题、更改颜色等。 希望这可以帮助到你!如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值