首页 > 解决方案 > Matlab 中 3D 绘图的 XData 大小错误

问题描述

G = 

  graph with properties:

    Edges: [4782×2 table]
    Nodes: [692×0 table]

>> plot(G, 'XData', x1, 'YData', y1, 'ZData', z1)
Error using matlab.graphics.chart.primitive.GraphPlot
Expected XData to be an array with number of elements equal to 692.

这是从邻接矩阵创建图形,然后尝试将节点粘贴到特定坐标 (x1,y1,z1) 的输出,但它给了我关于 XData 大小错误的错误。我从这里按照教程:https ://www.mathworks.com/help/matlab/ref/graph.plot.html

我可以用较小的集合重现错误:

a = [1 2 3]
b = [4 5 6]
c = [7 8 9]
d = [10 11 12]
e = [13 14 15]
f = [16 17 18]

G = graph(a,b,c)
plot(G, 'XData', d, 'YData', e, 'ZData', f)

给出相同的错误,除了“元素数等于 6”

标签: matlabgraphing

解决方案


查看文档,您似乎正在使用G = graph(s,t,weights)构造函数的形式graph。在这种形式下,st是节点对。每个元素对表示 ID和[s(i),t(i)]的节点之间的一条边。第三个数组给出了每条边的权重。因此,您的图有 3 条边和 6 个节点:s(i)t(i)

a = [1 2 3];
b = [4 5 6];
c = [7 8 9];
G = graph(a,b,c)

您的节点编号为 1 到 6,节点 1 和 4 之间有一条边,2 和 5 之间有一条边,3 和 6 之间有一条边。

plot因此,对于函数中的这 6 个节点,您还需要 6 个坐标。


推荐阅读