Этот пример показывает, как добавить атрибуты в узлы и ребра в графиках, созданных с помощью 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
-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 array
{'First' }
{'Fourth'}
Добавьте вес ребра в график путем добавления переменной, Weight
, к таблице G.Edges
. Переменной 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