有向图对齐EdgeCData与正确的边缘

19日视图(30天)
我使用一个邻接矩阵,显示在一个有向图,我有一个相应的矩阵,包含额外的信息关于我的数据,我想使用的边缘颜色。问题是,EdgeCData财产预计一个矢量,在转换,数据不再是正确对齐。
一个= [1 1 0 0 0;0 0 0 0 1);0 1 0 0 1;1 0 0 0 0;0 0 1 1 0];%邻接矩阵
CData = [。85。1 0 0 0;0 0 0 0。2;0 5 0 0主板市场;3 0 0 0 0;0 0。45 1 0];%颜色数据
CDataVec = 0 (CData);%转换为矢量EdgeCData产权(位移数据)
colormap飞机
caxis ([0 1])
G =有向图(一个);
DG =情节(G);
DG。EdgeCData = CDataVec;
c = colorbar;
我的理解是,邻接矩阵映射到有向图的行ID指向列ID(例如数据行4列1邻接矩阵A的节点有向图中的4连接节点1)。边缘的颜色我想在这种情况下是0.3(因为这是价值4行,第一列在CData),而是它是1。我怎样才能得到所有的颜色数据与适当的边缘?

接受的答案

Asvin库马尔
Asvin库马尔 2021年6月30日
编辑:Asvin库马尔 2021年6月30日
您需要传递到之前CData矩阵转置 非零
非零 生成一个列表遍历输入二维矩阵的非零元素列为主的形式。然而,边的有向图生成一个列表行邻接矩阵的形式。
试试这段代码:
一个= [1 1 0 0 0;0 0 0 0 1);0 1 0 0 1;1 0 0 0 0;0 0 1 1 0];%邻接矩阵
CData = [。85。1 0 0 0;0 0 0 0。2;0 5 0 0主板市场;3 0 0 0 0;0 0。45 1 0];%颜色数据
CDataVec = 0 (CData。');%转换为矢量EdgeCData产权
colormap飞机
caxis ([0 1])
G =有向图(一个);
DG =情节(G);
DG。EdgeCData = CDataVec;
c = colorbar;
%比较下面的两个数组的顺序:
CDataVec
CDataVec = 8×1
0.8500 0.1000 0.2000 0.5000 0.6500 0.3000 0.4500 1.0000
G.Edges.EndNodes
ans = 8×2
1 1 1 2 2 5 3 2 3 5 4 1 3 5 4
1评论
亚历克斯Wooten
亚历克斯Wooten 2021年6月30日
好谢谢你的深入解释!我希望答案是简单的东西。

登录置评。

更多的答案(0)

类别

找到更多的在图和网络算法帮助中心文件交换

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!