Графическое изображение графика и индивидуальная настройка

Этот пример показывает, как построить график графиков, и затем настроить отображение, чтобы добавить метки или подсвечивающий к вершинам графика и краям.

Объекты графического изображения графика

Используйте функцию plot, чтобы построить график объекты digraph и graph. По умолчанию 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

Маркировка Nodes и Edges

Используйте 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 узлов:

  1. Методом макета графика по умолчанию всегда является 'subspace'.

  2. Узлы больше не маркируются автоматически.

  3. MarkerSize свойство установлено в 2. (Меньшие графики имеют размер маркера 4).

  4. Свойство ArrowSize ориентированных графов установлено в 4. (Меньшие ориентированные графы используют размер стрелки 7).

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

| | |

Похожие темы

Была ли эта тема полезной?