Create a graph with several isolated nodes and a few links

6 ビュー (過去 30 日間)
Sim
Sim 2023 年 10 月 14 日
コメント済み: Sim 2023 年 10 月 16 日
Why I am not able to create a graph with several isolated nodes and a few links?
s = [1
1
1];
t = [1
2
3];
XY = [ 1 1.5
1.2 1.7
1.3 1.3
1.7 2.2
1 2
4.2 2.9
3.5 2.5
3.8 2.9
3.8 3.2
3.6 3.1
3 3
3.4 3.4
3 2.3];
G = graph(s,t);
G.Nodes.X = XY(:,1); G.Nodes.Y = XY(:,2);
Error using .
To assign to or create a variable in a table, the number of rows must match the height of the table.

Error in graph/subsasgn>assignToNodes (line 161)
nodeprop = subsasgn(nodeprop, S, V);

Error in indexing (line 18)
G = assignToNodes(G, S, V);
  6 件のコメント
Dyuman Joshi
Dyuman Joshi 2023 年 10 月 14 日
But there are no isolated nodes in your graph -
s = [1
1
1];
t = [1
2
3];
G = graph(s,t);
plot(G)
Sim
Sim 2023 年 10 月 16 日
Hi @Dyuman Joshi! Thanks for your comments! I think @Steven Lord got my point..... Sorry, I think I did not explain well my issue... :-)

サインインしてコメントする。

採用された回答

Steven Lord
Steven Lord 2023 年 10 月 14 日
Your code would work with one minor addition, a line that adds the additional nodes to the graph that are not present in the s and t vectors you use to create the graph.
s = [1
1
1];
t = [1
2
3];
XY = [ 1 1.5
1.2 1.7
1.3 1.3
1.7 2.2
1 2
4.2 2.9
3.5 2.5
3.8 2.9
3.8 3.2
3.6 3.1
3 3
3.4 3.4
3 2.3];
G = graph(s,t);
G = addnode(G, height(XY)-numnodes(G)); % Added
G.Nodes.X = XY(:,1);
G.Nodes.Y = XY(:,2);
Let's plot the graph and see the isolated nodes.
plot(G, 'XData', G.Nodes.X, 'YData', G.Nodes.Y)
If later on you want to connect some of those isolated nodes to others, use the addedge function.
  1 件のコメント
Sim
Sim 2023 年 10 月 16 日
Thanks a lot! This is what I was looking for :-)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGraph and Network Algorithms についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by