В этом примере показано, как добавить атрибуты к узлам и ребрам в графиках, созданных с помощью 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 таблица. Name переменная должна быть указана как Nоколо-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 таблица. Weight переменная должна быть M-по-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.Edgesans=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