Добавление имен узла графика, веса ребра и других атрибутов

Этот пример показывает, как добавить атрибуты в узлы и ребра в графиках, созданных с помощью 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 являются оба таблицами, можно использовать редактор Переменных, чтобы в интерактивном режиме просмотреть или отредактировать таблицы. Для получения дополнительной информации смотрите, Создают и Переменные Редактирования.

Маркировка Nodes и Edges of Graph Plot

Когда вы строите график, можно использовать переменные в 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

Смотрите также

|

Похожие темы