В этом примере показано, как строить графики, а затем настраивать отображение для добавления меток или подсветки к узлам и ребрам графика.
Используйте plot функция для построения графика graph и digraph объекты. По умолчанию plot проверяет размер и тип графика, чтобы определить, какой макет использовать. Полученное окно фигуры не содержит засечек осей. Однако если указать координаты (x, y) узлов с помощью XData, YData, или ZData пары имя-значение, то рисунок включает оси засечки.
Метки узлов автоматически включаются в графики графиков, имеющих не более 100 узлов. В метках узлов используются имена узлов, если они доступны; в противном случае метки являются числовыми индексами узлов.
Например, создайте график, используя матрицу смежности buckyball, а затем постройте график, используя все опции по умолчанию. При звонке plot и укажите выходной аргумент, затем функция возвращает дескриптор GraphPlot объект. Впоследствии этот объект можно использовать для настройки свойств графика. Например, можно изменить цвет или стиль ребер, размер и цвет узлов и т. д.
G = graph(bucky); p = plot(G)

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: {1x60 cell}
EdgeLabel: {}
XData: [1x60 double]
YData: [1x60 double]
ZData: [1x60 double]
Show all properties
После того, как у вас есть ручка GraphPlot используйте индексирование точек для доступа или изменения значений свойств. Полный список свойств, которые можно настроить, см. в разделе Свойства графика (Graph) Печать (Plot Properties).
Изменение значения NodeColor кому 'red'.
p.NodeColor = 'red';
Определите ширину линий кромок.
p.LineWidth
ans = 0.5000
Создайте и постройте график, представляющий L-образную мембрану, построенную из квадратной сетки со стороной 12 узлов. Укажите выходной аргумент с помощью plot для возврата дескриптора к GraphPlot объект.
n = 12; A = delsq(numgrid('L',n)); G = graph(A,'omitselfloops')
G =
graph with properties:
Edges: [130x2 table]
Nodes: [75x0 table]
p = plot(G)

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: {1x75 cell}
EdgeLabel: {}
XData: [1x75 double]
YData: [1x75 double]
ZData: [1x75 double]
Show all properties
Используйте layout для изменения компоновки узлов графика на графике. Различные опции компоновки автоматически вычисляют координаты узлов для графика. Кроме того, можно указать собственные координаты узла с помощью XData, YData, и ZData свойства GraphPlot объект.
Вместо использования метода компоновки 2-D по умолчанию layout для указания 'force3' компоновка, которая является компоновкой, направленной на 3-D силу.
layout(p,'force3')
view(3)
Окраска узлов графика на основе их степени. На этом графике все внутренние узлы имеют одинаковую максимальную степень 4, узлы вдоль границы графа имеют степень 3, а угловые узлы имеют наименьшую степень 2. Сохранить данные раскраски узла в качестве переменной NodeColors в G.Nodes.
G.Nodes.NodeColors = degree(G); p.NodeCData = G.Nodes.NodeColors; colorbar

Добавьте некоторые случайные целочисленные веса к рёбрам графа, а затем постройте график рёбер таким образом, чтобы их ширина линии была пропорциональна их весу. Поскольку ширина линии кромки, приблизительно превышающая 7, начинает становиться громоздкой, масштабировать ширину линии так, чтобы кромка с наибольшим весом имела ширину линии, равную 7. Сохранить данные о ширине края в качестве переменной LWidths в G.Edges.
G.Edges.Weight = randi([10 250],130,1); G.Edges.LWidths = 7*G.Edges.Weight/max(G.Edges.Weight); p.LineWidth = G.Edges.LWidths;

Извлечение и печать верхнего правого угла G как подграф, чтобы облегчить чтение деталей на графике. Новый график, H, наследует NodeColors и LWidths переменные из G, так что воссоздание предыдущих настроек печати является простым. Однако узлы в H перенумерованы, чтобы учесть новое число узлов в графике.
H = subgraph(G,[1:31 36:41]); p1 = plot(H,'NodeCData',H.Nodes.NodeColors,'LineWidth',H.Edges.LWidths); colorbar

Использовать labeledge маркировка кромок, ширина которых больше 6 с этикеткой, 'Large'. labelnode функция работает аналогичным образом для маркировки узлов.
labeledge(p1,find(H.Edges.LWidths > 6),'Large')
Найдите кратчайший путь между узлом 11 и узлом 37 в подграфе, H. Выделите края вдоль этого контура красным цветом и увеличьте размер конечных узлов на контуре.
path = shortestpath(H,11,37)
path = 1×10
11 12 17 18 19 24 25 30 36 37
highlight(p1,[11 37]) highlight(p1,path,'EdgeColor','r')

Удалите метки узлов и панель цветов и сделайте все узлы черными.
p1.NodeLabel = {};
colorbar off
p1.NodeColor = 'black';
Найдите другой кратчайший путь, который игнорирует веса кромок. Выделите этот путь зеленым цветом.
path2 = shortestpath(H,11,37,'Method','unweighted')
path2 = 1×10
11 12 13 14 15 20 25 30 31 37
highlight(p1,path2,'EdgeColor','g')

Обычно создаются графики с сотнями тысяч или даже миллионами узлов и/или рёбер. По этой причине plot обрабатывает большие графики несколько иначе, чтобы сохранить читаемость и производительность. plot при работе с графиками, имеющими более 100 узлов, функция производит следующие корректировки:
Метод компоновки графика по умолчанию всегда 'subspace'.
Узлы больше не маркируются автоматически.
MarkerSize свойство имеет значение 2. (Меньшие графики имеют размер маркера 4).
ArrowSize свойство направленных графов имеет значение 4. (Меньшие направленные графики используют размер стрелки 7).
digraph | graph | GraphPlot | plot