我试图用标题来描绘一棵生成树。
但如果我尝试绘制图表,我会收到以下错误:
Error using rng Too many input arguments. Error in matlab.internal.graph.MLGraph/forceLayout>layoutOneConnComp (line 82) oldstate = rng(0,'twister'); Error in matlab.internal.graph.MLGraph/forceLayout (line 55) [x,y] = layoutOneConnComp(x,y,sources,targets,iterations); Error in matlab.graphics.chart.primitive.GraphPlot/layoutforce Error in matlab.graphics.chart.primitive.GraphPlot/layout>layoutauto Error in matlab.graphics.chart.primitive.GraphPlot/layout Error in matlab.graphics.chart.primitive.GraphPlot Error in graph/plot (line 110) hObj = matlab.graphics.chart.primitive.GraphPlot('BasicGraph', ...
其他信息:
GrangerLandN={ 'X' 'Y' 'Z' ...}';
GrangerCoal={ 'A' 'B' 'C' ...}';
GrangerValues=(1,2,3,...)';
GG=graph(GrangerLandN,GrangerCoal,GrangerValues)
GG =
graph with properties:
Edges: [100×2 table]
Nodes: [20×1 table]
plot(GG) %also tried plot(GG,'EgdesLabel',GG.Edges.Weight) but both are throwing the error stated above.
尝试用较少的观察来做同样的事情并且完美地完成了。错误的原因是什么,以及如何修复代码?
答案 0 :(得分:1)
此示例中使用的关键功能是MATLOG toolbox中的pplot
和minspan
。以下代码创建了一个网络,然后绘制了一个最小生成树(wiki)。
还使用了MATLOG的一些支持功能(请参见下面的代码)来创建示例(摘自MATLOG文档)。
%% 2. Create Delaunay Network from Cities Centered around Atlanta
%% Make network using cities of 30k pop. within 150 miles of Atlanta
Atl = uscity('XY',mand({'Atlanta'},uscity('Name'),{'GA'},uscity('ST')));
[Name,XY]=uscity10k('Name','XY', ...
(dists(Atl,uscity10k('XY'),'mi') < 150)' & uscity10k('Pop') > 30000);
makemap(XY)
pplot(XY,'r.')
%% Use Delaunay triangulation as road network
tri = delaunay(XY(:,1),XY(:,2)); % Delaunay triangulation
IJ = tri2list(tri); % Convert to arc list
d = diag(dists(XY(IJ(:,1),:),XY(abs(IJ(:,2)),:),'mi'));
d = d * 1.2; % Convert great circle to estimated road distances
d = round(d);
IJD = [IJ d];
pplot(IJD,XY,'m-')
pplot(IJD,num2cellstr(d),XY)
%% Minimum Spanning Tree (Kruskal algorithm)
t = minspan(IJD);
pplot(IJD(t~=0,:),XY,'b-','LineWidth',2,'DisplayName','minspan')