如何连接同级顶点?利用matlab和函数树图,例如:连接顶点2和3。
连接示例:https://i.stack.imgur.com/fBLk3.png
如何连接多个父母?利用matlab和函数树图例如:顶点5的父节点需要同时是顶点2和6。代码:
p(1)=0;
p(2)=1;p(3)=1;
p(6)=3;p(7)=3;
p(5)=2;p(4)=2;
p(10)=5;p(11)=5;
p(8)=4;p(9)=4;
p(16)=8;p(17)=9;
p(14)=7;p(15)=7;
p(20)=14;p(19)=14;
p(20)=15;p(19)=15;
%p.edgelable=0;
treeplot(p);
[x,y] = treelayout(p);
for i=1:length(y)
text(x(i),y(i),strcat('a',num2str(i)))
end
for i = 2: length(p)
Parent_Node = p(i);
if(Parent_Node > 0)
X_Midpoint = (x(i) + x(Parent_Node))/2;
Y_Midpoint = (y(i) + y(Parent_Node))/2;
text(X_Midpoint,Y_Midpoint,'num of sharings')
end
end
'''
手动绘制附加线
需要连接的其他父对象可以通过绘制其他线手动完成。line()
函数采用两个数组,用于指定直线起点和终点的x
和y
坐标。为了找到需要连接的节点的对应位置,阵列p
可以被索引为p(node_value)
,其中node_value
是每个节点/点上的标签。
p(1)=0;
p(2)=1;p(3)=1;
p(6)=3;p(7)=3;
p(5)=2;p(4)=2;
p(10)=5;p(11)=5;
p(8)=4;p(9)=4;
p(16)=8;p(17)=9;
p(14)=7;p(15)=7;
p(20)=14;p(19)=14;
p(20)=15;p(19)=15;
%p.edgelable=0;
treeplot(p);
[x,y] = treelayout(p);
for i=1:length(y)
text(x(i),y(i),strcat('a',num2str(i)))
end
for i = 2: length(p)
Parent_Node = p(i);
if(Parent_Node > 0)
X_Midpoint = (x(i) + x(Parent_Node))/2;
Y_Midpoint = (y(i) + y(Parent_Node))/2;
text(X_Midpoint,Y_Midpoint,["num of";"sharings"],'FontSize',7);
end
end
line([x(2) x(3)],[y(2) y(3)],'color','r');
X_Midpoint = (x(2) + x(3))/2;
Y_Midpoint = (y(2) + y(3))/2;
text(X_Midpoint,Y_Midpoint,["num of";"sharings"],'FontSize',7);
line([x(6) x(7)],[y(6) y(7)],'color','r');
X_Midpoint = (x(6) + x(7))/2;
Y_Midpoint = (y(6) + y(7))/2;
text(X_Midpoint,Y_Midpoint,["num of";"sharings"],'FontSize',7);