Matlab绘制树形图

两种方法绘制树形图,这里只讨论画出树形图,不关心树形图的作用和来源
结果图:
treeplot方法biograph方法


treeplot方法

treeVec = [0 1 2 2 1 5 5 1 8 1 10];
treeplot(treeVec);
count = size(treeVec,2);
[x,y] = treelayout(treeVec);
x = x';
y = y';
name1 = cellstr(num2str((1:count)'));
text(x(:,1),y(:,1),name1,'VerticalAlignment','bottom','HorizontalAlignment','right');

深度优先搜索,结果显示为图1所示,treeVec有自己的书写格式,包含所有父节点,具体可查询treeplot帮助文档;生成的树形图有一定局限性,而且某些情况下不够美,可采用下面这种方法。

biograph方法

ChannelName = {'1通道','2通道','3通道','4通道','5通道','6通道','7通道','8通道'};
tree  = [4 2;4 3;4 5;2 1;5 6;6 7;6 8];
cm = zeros(8);
for i = 1:7
   cm(tree(i,1),tree(i,2)) = 1; 
end
bg1 = biograph(cm,ChannelName);
view(bg1);

结果如右图所示,理论上可以显示任意树形图;
biograth第一个变量需要输入一个稀疏矩阵,相关函数sparse;
我这里是直接创建了一个稀疏矩阵,通过在某些点赋予1;
cm变量展示图:

12345678
100000000
210000000
300000000
400110100
500000100
600000011
700000000
800000000

cm中为1的坐标就是tree的内容
详情见biograth的官方文档;
biograth功能远不止显示一个树状图这么简单,可以绘制多连通的网状图,利用graphminspantree可以在包含权重的网状图中计算最小生成树,用到再讨论。

  • 3
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值