exponenta event banner

основной момент

Выделение узлов и ребер на графике

Описание

пример

highlight(H,nodeIDs) выделяет узлы, указанные nodeIDs путем увеличения размеров их маркеров.

пример

highlight(H,G) подсвечивает узлы и ребра графа G путем увеличения размера маркера узла и ширины линии кромки соответственно. G должны иметь одинаковые узлы и подмножество рёбер базового графа H. Если G содержит повторяющиеся ребра, затем все они подсвечиваются. Изолированные узлы со степенью 0 не подсвечиваются.

highlight(H,s,t) подсвечивает все края между указанными парами исходного и целевого узлов в s и t путем увеличения ширины линий кромок. Если вместо пар узлов (s, t) доступны индексы границ, используйтеhighlight(H,'Edges',idx) вместо этого.

пример

highlight(___,Name,Value) использует дополнительные параметры, заданные одним или несколькими аргументами пары Name-Value, используя любую из комбинаций входных аргументов в предыдущих синтаксисах. Например, highlight(H,nodes,'NodeColor','g') подсвечивает подмножество узлов, изменяя их цвет на зеленый, вместо увеличения размера маркера.

Примеры

свернуть все

Создайте и постройте график. Возврат дескриптора к GraphPlot объект, ч.

s = 1;
t = 2:6;
G = graph(s,t);
h = plot(G,'Layout','force')

Figure contains an axes. The axes contains an object of type graphplot.

h = 
  GraphPlot with properties:

     NodeColor: [0 0.4470 0.7410]
    MarkerSize: 4
        Marker: 'o'
     EdgeColor: [0 0.4470 0.7410]
     LineWidth: 0.5000
     LineStyle: '-'
     NodeLabel: {'1'  '2'  '3'  '4'  '5'  '6'}
     EdgeLabel: {}
         XData: [3.8317e-04 0.6403 0.4648 -1.3929 1.7883 -1.5009]
         YData: [9.6820e-04 1.6734 -1.7296 1.1251 -0.0922 -0.9777]
         ZData: [0 0 0 0 0 0]

  Show all properties

Выделите узлы 1 и 3, увеличив их размер маркера.

highlight(h,[1 3])

Figure contains an axes. The axes contains an object of type graphplot.

Выделите узлы 1 и 3, изменив их цвет.

highlight(h,[1 3],'NodeColor','g')

Figure contains an axes. The axes contains an object of type graphplot.

Создайте и постройте график. Возврат дескриптора к GraphPlot объект, h.

s = [1 1 1 1 1 1 2 3 4 5 6 7 7 7 7 8 9 10 11 8 6];
t = [2 3 4 5 6 7 3 4 5 6 2 8 9 10 11 10 10 11 8 1 11];
G = graph(s,t);
h = plot(G)

Figure contains an axes. The axes contains an object of type graphplot.

h = 
  GraphPlot with properties:

     NodeColor: [0 0.4470 0.7410]
    MarkerSize: 4
        Marker: 'o'
     EdgeColor: [0 0.4470 0.7410]
     LineWidth: 0.5000
     LineStyle: '-'
     NodeLabel: {'1'  '2'  '3'  '4'  '5'  '6'  '7'  '8'  '9'  '10'  '11'}
     EdgeLabel: {}
         XData: [1x11 double]
         YData: [1x11 double]
         ZData: [0 0 0 0 0 0 0 0 0 0 0]

  Show all properties

Вычислите минимальное покрывающее дерево графика. Выделите минимальный подграф покрывающего дерева на графике, увеличив ширину линии и изменив цвет кромок в дереве.

[T,p] = minspantree(G);
highlight(h,T,'EdgeColor','r','LineWidth',1.5)

Figure contains an axes. The axes contains an object of type graphplot.

Создайте и постройте график. Возврат дескриптора к GraphPlot объект, h.

n = 10;
A = delsq(numgrid('L',n+2));
G = graph(A,'omitselfloops'); 
G.Edges.Weight = ones(numedges(G),1);
h = plot(G);

Figure contains an axes. The axes contains an object of type graphplot.

Выделите кратчайший путь между узлами 74 и 21, изменив цвет узлов и краев вдоль пути на зеленый.

path = shortestpath(G,74,21);
highlight(h,path,'NodeColor','g','EdgeColor','g')

Figure contains an axes. The axes contains an object of type graphplot.

Создайте график, представляющий квадратную сетку со стороной из 8 узлов. Постройте график и верните маркер перемещения к GraphPlot объект, p.

n = 8;
A = delsq(numgrid('S',n+2));
G = graph(A,'omitselfloops');
p = plot(G);

Figure contains an axes. The axes contains an object of type graphplot.

Найдите соседей узла 36.

n36 = neighbors(G,36)
n36 = 4×1

    28
    35
    37
    44

Использовать highlight для изменения цвета узла 36 на зеленый, а цвета его соседей и их соединительных краев на красный.

highlight(p,36,'NodeColor',[0 0.75 0])
highlight(p,n36,'NodeColor','red')
highlight(p,36,n36,'EdgeColor','red')

Figure contains an axes. The axes contains an object of type graphplot.

Создание и печать направленного графика. Возврат дескриптора к GraphPlot объект, h.

G = digraph(bucky);
h = plot(G);

Figure contains an axes. The axes contains an object of type graphplot.

Вычислите максимальный поток между узлами 1 и 56. Укажите два выхода для maxflow для возврата направленного графа ненулевых потоков, GF.

[mf,GF] = maxflow(G,1,56)
mf = 3
GF = 
  digraph with properties:

    Edges: [28x2 table]
    Nodes: [60x0 table]

Использовать highlight для изменения цвета кромок, содержащих ненулевые значения расхода. Также измените цвет исходного узла 1 и целевого узла 56 на зеленый.

highlight(h,GF,'EdgeColor',[0.9 0.3 0.1],'NodeColor',[0.9 0.3 0.1])
highlight(h,[1 56],'NodeColor','g')

Figure contains an axes. The axes contains an object of type graphplot.

Постройте график кратчайшего пути между двумя узлами в мультиграфе и выделите определенные пересекаемые кромки.

Создание взвешенного мультиграфа с пятью узлами. Несколько пар узлов имеют более одного ребра между ними. Постройте график для справки.

G = graph([1 1 1 1 1 2 2 3 3 3 4 4],[2 2 2 2 2 3 4 4 5 5 5 2],[2 4 6 8 10 5 3 1 5 6 8 9]);
p = plot(G,'EdgeLabel',G.Edges.Weight);

Figure contains an axes. The axes contains an object of type graphplot.

Найдите кратчайший путь между узлом 1 и узлом 5. Поскольку несколько пар узлов имеют более одного края между ними, укажите три выхода для shortestpath для возврата определенных кромок, через которые проходит кратчайший путь.

[P,d,edgepath] = shortestpath(G,1,5)
P = 1×5

     1     2     4     3     5

d = 11
edgepath = 1×4

     1     7     9    10

Результаты показывают, что кратчайший путь имеет общую длину 11 и следует за краями, заданными G.Edges(edgepath,:).

G.Edges(edgepath,:)
ans=4×2 table
    EndNodes    Weight
    ________    ______

     1    2       2   
     2    4       3   
     3    4       1   
     3    5       5   

Выделите этот контур кромки с помощью highlight функции с помощью 'Edges' пара «имя-значение» для указания индексов пересекаемых кромок.

highlight(p,'Edges',edgepath)

Figure contains an axes. The axes contains an object of type graphplot.

Входные аргументы

свернуть все

График ввода, заданный как GraphPlot объект. Используйте graph или digraph функции, чтобы создать график, а затем использовать plot с выходным аргументом для возврата GraphPlot объект.

Пример: H = plot(G)

Узлы для выделения, указанные как логический вектор или как один или несколько индексов узлов или имен узлов. Если nodeIDs является логическим вектором, то он должен иметь длину numnodes(G).

В этой таблице показаны различные способы ссылки на один или несколько узлов по их числовым индексам узлов или по их именам.

ФормаОдин узелНесколько узлов
Индекс узла

Скаляр

Пример: 1

Вектор

Пример: [1 2 3]

Имя узла

Символьный вектор

Пример: 'A'

Массив ячеек символьных векторов

Пример: {'A' 'B' 'C'}

Строковый скаляр

Пример: "A"

Строковый массив

Пример: ["A" "B" "C"]

nodeIDs не следует указывать имена узлов, которые конфликтуют ни с одним из необязательных имен параметров для highlight, такие как 'Edges' или 'EdgeColor'. Использовать findnode чтобы вместо этого передать индекс узла для этих случаев.

График для выделения, заданный как graph или digraph объект. G должны иметь одинаковые узлы и подмножество рёбер базового графа H. Изолированные узлы со степенью 0 не выделены.

Пары узлов, указанные как отдельные аргументы индексов узлов или имен узлов. Аналогично расположенные элементы в s и t укажите исходный и целевой узлы для рёбер на графике.

s и t не следует указывать имена узлов, которые конфликтуют ни с одним из необязательных имен параметров для highlight, такие как 'Edges' или 'EdgeColor'. Использовать findnode чтобы вместо этого передать индекс узла для этих случаев.

Пример: highlight(H,[1 2],[3 3]) подсвечивает кромки графика (1,3) и (2,3).

Пример: highlight(H,'a','b') подсвечивает все ребра из 'a' кому 'b'.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: highlight(H,nodes,'NodeColor','y')
Кромки для выделения

свернуть все

Кромки для выделения, заданная как разделенная запятыми пара, состоящая из 'Edges' и скалярный граничный индекс, вектор граничных индексов или логический вектор. Эта пара имя-значение используется для выделения определенной кромки между узлами при наличии нескольких кромок между одними и теми же двумя узлами.

Значение этой пары имя-значение может быть третьим выводом из shortestpath или shortestpathtree, такие как [path,d,edgepath] = shortestpath(…).

Пример: highlight(p,'Edges',edgepath)

Свойства кромки

свернуть все

Цвет кромки, заданный как разделенная запятыми пара, состоящая из 'EdgeColor' и триплет RGB, шестнадцатеричный код цвета или имя цвета.

  • Триплеты RGB и шестнадцатеричные цветовые коды полезны для задания пользовательских цветов.

    • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

    • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

    Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

    Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
    'red''r'[1 0 0]'#FF0000'

    'green''g'[0 1 0]'#00FF00'

    'blue''b'[0 0 1]'#0000FF'

    'cyan' 'c'[0 1 1]'#00FFFF'

    'magenta''m'[1 0 1]'#FF00FF'

    'yellow''y'[1 1 0]'#FFFF00'

    'black''k'[0 0 0]'#000000'

    'white''w'[1 1 1]'#FFFFFF'

    Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB ®, используемых на многих типах графиков.

    Триплет RGBШестнадцатеричный цветовой кодВнешность
    [0 0.4470 0.7410]'#0072BD'

    [0.8500 0.3250 0.0980]'#D95319'

    [0.9290 0.6940 0.1250]'#EDB120'

    [0.4940 0.1840 0.5560]'#7E2F8E'

    [0.4660 0.6740 0.1880]'#77AC30'

    [0.3010 0.7450 0.9330]'#4DBEEE'

    [0.6350 0.0780 0.1840]'#A2142F'

Пример: plot(G,'EdgeColor','r') создает график с красными ребрами.

Стиль линии, заданный как разделенная запятыми пара, состоящая из 'LineStyle' и один из стилей линий, перечисленных в этой таблице.

ПерсонажиСтиль линииРезультирующая линия
'-'Сплошная линия

'--'Пунктирная линия

':'Пунктирная линия

'-.'Пунктирная линия

'none'Без строкиБез строки

Ширина линии кромки, заданная как разделенная запятыми пара, состоящая из 'LineWidth' и положительное значение в единицах измерения точки.

Пример: 0.75

Размер стрелки, заданный как положительное значение в единицах измерения точки. Значение по умолчанию ArrowSize является 7 для графиков со 100 или менее узлами, и 4 для графиков с более чем 100 узлами.

ArrowSize используется только для направленных графов.

Пример: 15

Положение стрелки вдоль кромки, заданное как значение в [0 1]. Значение около 0 размещает стрелки ближе к исходному узлу, а значение около 1 размещает стрелки ближе к целевому узлу. Значение по умолчанию: 0.5 чтобы стрелки находились на полпути между исходным и целевым узлами.

ArrowPosition используется только для направленных графов.

Свойства узла

свернуть все

Цвет узла, заданный как разделенная запятыми пара, состоящая из 'NodeColor' и триплет RGB, шестнадцатеричный код цвета или имя цвета.

  • Триплеты RGB и шестнадцатеричные цветовые коды полезны для задания пользовательских цветов.

    • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

    • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

    Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

    Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
    'red''r'[1 0 0]'#FF0000'

    'green''g'[0 1 0]'#00FF00'

    'blue''b'[0 0 1]'#0000FF'

    'cyan' 'c'[0 1 1]'#00FFFF'

    'magenta''m'[1 0 1]'#FF00FF'

    'yellow''y'[1 1 0]'#FFFF00'

    'black''k'[0 0 0]'#000000'

    'white''w'[1 1 1]'#FFFFFF'

    Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB, используемых на многих типах графиков.

    Триплет RGBШестнадцатеричный цветовой кодВнешность
    [0 0.4470 0.7410]'#0072BD'

    [0.8500 0.3250 0.0980]'#D95319'

    [0.9290 0.6940 0.1250]'#EDB120'

    [0.4940 0.1840 0.5560]'#7E2F8E'

    [0.4660 0.6740 0.1880]'#77AC30'

    [0.3010 0.7450 0.9330]'#4DBEEE'

    [0.6350 0.0780 0.1840]'#A2142F'

Пример: plot(G,'NodeColor','k') создает график с черными узлами.

Символ обозначения узла, заданный как разделенная запятыми пара, состоящая из 'Marker' и один из векторов символов, перечисленных в этой таблице. По умолчанию для узлов графика используются круглые маркеры.

СтоимостьОписание
'o'Круг
'+'Знак «Плюс»
'*'Звездочка
'.'Пункт
'x'Крест
'_'Горизонтальная линия
'|'Вертикальная линия
'square' или 's'Квадрат
'diamond' или 'd'Алмаз
'^'Треугольник, направленный вверх
'v'Треугольник, направленный вниз
'>'Прямоугольный треугольник
'<'Треугольник, указывающий влево
'pentagram' или 'p'Пятиконечная звезда (пентаграмма)
'hexagram' или 'h'Шестиконечная звезда (гексаграмма)
'none'Без маркеров

Пример: '+'

Пример: 'diamond'

Размер маркера узла, указанный как разделенная запятыми пара, состоящая из 'MarkerSize' и положительное значение в единицах измерения точки. Размер маркера по умолчанию: 4 для графиков со 100 или менее узлами, и 2 для графиков с более чем 100 узлами.

Пример: 10

Метки узлов и кромок

свернуть все

Цвет метки узла, указанный как триплет RGB, шестнадцатеричный код цвета или имя цвета.

Триплеты RGB и шестнадцатеричные цветовые коды полезны для задания пользовательских цветов.

  • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB, используемых на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Пример: plot(G,'NodeLabel',C,'NodeLabelColor','m') создает график с метками пурпурных узлов.

Цвет метки края, указанный как триплет RGB, шестнадцатеричный код цвета или имя цвета.

Триплеты RGB и шестнадцатеричные цветовые коды полезны для задания пользовательских цветов.

  • Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0,1]; например, [0.4 0.6 0.7].

  • Шестнадцатеричный цветовой код - это символьный вектор или строковый скаляр, начинающийся с хэш-символа (#), за которыми следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 кому F. Значения не чувствительны к регистру. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' эквивалентны.

Можно также задать некоторые общие цвета по имени. В этой таблице перечислены параметры именованного цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Имя цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB, используемых на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Пример: plot(G,'EdgeLabel',C,'EdgeLabelColor','m') создает график с метками пурпурных кромок.

Шрифт

свернуть все

Имя шрифта для меток узлов, указанное как имя поддерживаемого шрифта или 'FixedWidth'. Для правильного отображения и печати необходимо выбрать шрифт, поддерживаемый системой. Шрифт по умолчанию зависит от конкретной операционной системы и языка. Например, в системах Windows ® и Linux ® в английской локализации по умолчанию используется шрифт Helvetica.

Чтобы использовать шрифт фиксированной ширины, который хорошо выглядит в любом языковом стандарте, укажите 'FixedWidth'.

Пример: 'Cambria'

Размер шрифта для меток узлов, указанный как положительное число.

Толщина текста в метках узлов, указанная как 'normal' или 'bold':

  • 'bold' - Более толстые очертания символов, чем обычно

  • 'normal' - Обычный вес, определяемый конкретным шрифтом

Не все шрифты имеют жирный вес.

Типы данных: cell | char | string

Наклон текста в метках узлов, указанный как 'normal' или 'italic':

  • 'italic' - Наклонные символы

  • 'normal' - Нет наклона символа

Не все шрифты имеют оба стиля шрифтов.

Типы данных: cell | char | string

Имя шрифта для меток краев, указанное как поддерживаемое имя шрифта или 'FixedWidth'. Для правильного отображения и печати необходимо выбрать шрифт, поддерживаемый системой. Шрифт по умолчанию зависит от конкретной операционной системы и языка. Например, системы Windows и Linux в английской локализации по умолчанию используют шрифт Helvetica.

Чтобы использовать шрифт фиксированной ширины, который хорошо выглядит в любом языковом стандарте, укажите 'FixedWidth'.

Пример: 'Cambria'

Размер шрифта для меток кромок, указанный как положительное число.

Толщина текста в краевых метках, указанная как 'normal' или 'bold':

  • 'bold' - Более толстые очертания символов, чем обычно

  • 'normal' - Обычный вес, определяемый конкретным шрифтом

Не все шрифты имеют жирный вес.

Типы данных: cell | char | string

Наклон символа текста в краевых метках, указанный как 'normal' или 'italic':

  • 'italic' - Наклонные символы

  • 'normal' - Нет наклона символа

Не все шрифты имеют оба стиля шрифтов.

Типы данных: cell | char | string

Представлен в R2015b