虽然说之前的弦图和桑基图都有刻度,但看起来有时候还是不够显眼,于是我又增添了数据标注功能:需要注意的是,使用该功能至少需要 R2019b 版本,首先先大体讲一下如何实现的,以便大家画图能用上,之后再讲一下弦图和桑基图函数是如何更新的:
原理
主要借助 R2019b 版本推出的 datatip
和 dataTipTextRow
函数进行实现,比如编写如下代码:
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
弦图合集
https://gitee.com/slandarer/matlab-chord-chart桑基图
https://gitee.com/slandarer/matlab-sankey-diagram