В этом примере показано, как добавить атрибуты к узлам и ребрам в графиках, созданных с помощью graph
и digraph
. Вы можете задать имена узлов или веса кромок, когда вы первоначально вызываете graph
или digraph
для создания графика. Однако в этом примере показано, как добавить атрибуты к графику после его создания.
Создайте ориентированный граф. Соответствующие элементы в s
и t
задайте исходный и целевой узлы каждого ребра в графике.
s = [1 1 2 2 3]; t = [2 4 3 4 4]; G = digraph(s,t)
G = digraph with properties: Edges: [5x1 table] Nodes: [4x0 table]
Добавьте имена узлов к графику путем добавления переменной, Name
, к G.Nodes
таблица. The Name
переменная должна быть задана как N
-by- 1
массив ячеек из векторов символов или строковых массивов, где N = numnodes(G)
. Важно использовать Name
переменная при добавлении имен узлов, так как это имя переменной обрабатывается специально некоторыми графиками.
G.Nodes.Name = {'First' 'Second' 'Third' 'Fourth'}';
Просмотр новой Nodes
таблица.
G.Nodes
ans=4×1 table
Name
__________
{'First' }
{'Second'}
{'Third' }
{'Fourth'}
Используйте индексацию таблиц для просмотра имен узлов 1 и 4.
G.Nodes.Name([1 4])
ans = 2x1 cell
{'First' }
{'Fourth'}
Добавьте веса ребер к графику путем добавления переменной, Weight
, к G.Edges
таблица. The Weight
переменная должна быть M
-by-1 числовой вектор, где M = numedges(G)
. Важно использовать Weight
переменная при добавлении весов ребер, так как это имя переменной обрабатывается специально некоторыми графиками.
G.Edges.Weight = [10 20 30 40 50]';
Просмотр новой Edges
таблица.
G.Edges
ans=5×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'First' } {'Fourth'} 20
{'Second'} {'Third' } 30
{'Second'} {'Fourth'} 40
{'Third' } {'Fourth'} 50
Используйте индексацию таблицы, чтобы просмотреть первую и третью строки G.Edges
.
G.Edges([1 3],:)
ans=2×2 table
EndNodes Weight
________________________ ______
{'First' } {'Second'} 10
{'Second'} {'Third' } 30
В принципе можно добавить любую переменную в G.Nodes
и G.Edges
который задает атрибут узлов или ребер графика. Добавление пользовательских атрибутов может быть полезным, так как такие функции, как subgraph
и reordernodes
сохраните атрибуты графика.
Например, добавьте переменную с именем Power
на G.Edges
чтобы указать, является ли каждое ребро 'on'
или 'off'
.
G.Edges.Power = {'on' 'on' 'on' 'off' 'off'}'; G.Edges
ans=5×3 table
EndNodes Weight Power
________________________ ______ _______
{'First' } {'Second'} 10 {'on' }
{'First' } {'Fourth'} 20 {'on' }
{'Second'} {'Third' } 30 {'on' }
{'Second'} {'Fourth'} 40 {'off'}
{'Third' } {'Fourth'} 50 {'off'}
Добавьте переменную с именем Size
на G.Nodes
для указания физического размера каждого узла.
G.Nodes.Size = [10 20 10 30]'; G.Nodes
ans=4×2 table
Name Size
__________ ____
{'First' } 10
{'Second'} 20
{'Third' } 10
{'Fourth'} 30
Начиная с Nodes
и Edges
являются обеими таблицами, для интерактивного просмотра или редактирования таблиц можно использовать редактор Переменных. Для получения дополнительной информации см. раздел «Создание и редактирование переменных».
Когда вы строите график, можно использовать переменные в G.Nodes
и G.Edges
чтобы пометить узлы и ребра графика. Такая практика удобна, так как эти переменные уже гарантированно имеют правильное количество элементов.
Постройте график и пометьте ребра с помощью Power
переменная в G.Edges
. Пометьте узлы, используя Size
переменная в G.Nodes
.
p = plot(G,'EdgeLabel',G.Edges.Power,'NodeLabel',G.Nodes.Size)
p = GraphPlot with properties: NodeColor: [0 0.4470 0.7410] MarkerSize: 4 Marker: 'o' EdgeColor: [0 0.4470 0.7410] LineWidth: 0.5000 LineStyle: '-' NodeLabel: {'10' '20' '10' '30'} EdgeLabel: {'on' 'on' 'on' 'off' 'off'} XData: [2 1.5000 1 2] YData: [4 3 2 1] ZData: [0 0 0 0] Show all properties