MATLAB | 我为弦图和桑基图增添了交互功能:一键数据标注

发布于:2025-06-18 ⋅ 阅读:(16) ⋅ 点赞:(0)

虽然说之前的弦图和桑基图都有刻度,但看起来有时候还是不够显眼,于是我又增添了数据标注功能:需要注意的是,使用该功能至少需要 R2019b 版本,首先先大体讲一下如何实现的,以便大家画图能用上,之后再讲一下弦图和桑基图函数是如何更新的:

原理

主要借助 R2019b 版本推出的 datatipdataTipTextRow 函数进行实现,比如编写如下代码:

X = [1, 2, 5, 3, 4, 2, 6, 6, 3, 1];
Y = [2, 1, 4, 2, 8, 3, 1, 4, 2, 3];
N = {'S', 'L', 'A', 'N', 'D', 'A', 'R', 'E', 'R', '!'};

p = scatter(X, Y,  80, 'k', 'filled');

% datatip(p)
p.DataTipTemplate.DataTipRows(1) = dataTipTextRow('XXX', X);
p.DataTipTemplate.DataTipRows(2) = dataTipTextRow('YYY', Y);
p.DataTipTemplate.DataTipRows(3) = dataTipTextRow('X+Y', X+Y);
p.DataTipTemplate.DataTipRows(4) = dataTipTextRow('NNN', N);

再点击数据点就会出现以下数据提示框:

需要注意的是,提示信息数组的大小需要和原始数据一样大,比如这里X,Y 都是 10 个数值,我们 N 大小也需要一样。

交互功能展示

我对三个函数绘图都进行了改进,鼠标左键点击弦就可添加数据提示框,点击小圆点能够消除数据提示框,鼠标右键点击能够消除对弦的高亮(黑色加粗边缘线):

此外桑基图使用方式也类似,不过改变的不是边缘颜色而是透明度:

此外,我简单设置了一个参数表用来修改数据提示框的基本属性,比如对于弦图第一个参数是配色,然后接下来三个是标签名称,最后一个是数值格式,例如我们之前创建了名为 CC 的对象,可以通过如下方式修改:

CC.dataTipFormat = {'r', '来源:', '目标:', '数值:', '%.2f'};

这样再点击弦,显示的标签,高亮颜色,以及数据格式都会改变:

大家可以去 gitee 仓库或者 fileexchange 获取更新版的函数:

gitee

fileexchange


网站公告

今日签到

点亮在社区的每一天
去签到