В этом примере показано, как построить графики, и затем настроить отображение, чтобы добавить метки или подсвечивающий к вершинам графика и ребрам.
Используйте plot функционируйте, чтобы построить graph и digraph объекты. По умолчанию, plot исследует размер и тип графика, чтобы определить который размещение использовать. Получившееся окно рисунка не содержит отметок деления осей. Однако, если вы задаете (x, y) координаты узлов с XData, YData, или ZData пары "имя-значение", затем фигура включает метки деления осей.
Метки узла включены автоматически в графиках графиков, которые имеют 100 или меньше узлов. Метки узла используют имена узла при наличии; в противном случае метки являются числовыми индексами узла.
Например, создайте график с помощью матрицы смежности бакибола, и затем постройте график с помощью всех опций по умолчанию. Если вы вызываете 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 возразите, используйте точечную индексацию, чтобы получить доступ или изменить значения свойств. Для полного списка свойств, которые можно настроить, см. Свойства GraphPlot.
Измените значение 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 объект.
Вместо того, чтобы использовать 2D метод макета по умолчанию, используйте 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).
GraphPlot | digraph | graph | plot