exponenta event banner

график

Печать узлов и ребер графика

Описание

пример

plot(G) строит графики узлов и рёбер на графике G.

пример

plot(G,LineSpec) задает стиль линии, обозначение маркера и цвет. Например, plot(G,'-or') использует красные круги для узлов и красные линии для ребер.

пример

plot(___,Name,Value) использует дополнительные параметры, заданные одним или несколькими аргументами пары Name-Value, используя любую из комбинаций входных аргументов в предыдущих синтаксисах. Например, plot(G,'Layout','circle') строит график кругового кольца графика, и plot(G,'XData',X,'YData',Y,'ZData',Z) задает (X,Y,Z) координаты узлов графика.

plot(ax,___) строит графики в осях, указанных ax вместо в текущие оси (gca). Опция, ax, может предшествовать любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

h = plot(___) возвращает GraphPlot объект. Этот объект используется для проверки и корректировки свойств графика печати.

Примеры

свернуть все

Создайте график, используя разреженную матрицу смежности, а затем постройте график.

n = 10;
A = delsq(numgrid('L',n+2));
G = graph(A,'omitselfloops')
G = 
  graph with properties:

    Edges: [130x2 table]
    Nodes: [75x0 table]

plot(G)

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

Создайте и постройте график. Укажите LineSpec для изменения Marker, NodeColorи/или LineStyle графика.

G = graph(bucky);
plot(G,'-.dr','NodeLabel',{})

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

Создайте направленный график, а затем постройте график с помощью 'force' макет.

G = digraph(1,2:5);
G = addedge(G,2,6:15);
G = addedge(G,15,16:20)
G = 
  digraph with properties:

    Edges: [19x1 table]
    Nodes: [20x0 table]

plot(G,'Layout','force')

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

Создайте взвешенный график.

s = [1 1 1 1 1 2 2 7 7 9 3 3 1 4 10 8 4 5 6 8];
t = [2 3 4 5 7 6 7 5 9 6 6 10 10 10 11 11 8 8 11 9];
weights = [1 1 1 1 3 3 2 4 1 6 2 8 8 9 3 2 10 12 15 16];
G = graph(s,t,weights)
G = 
  graph with properties:

    Edges: [20x2 table]
    Nodes: [11x0 table]

Постройте график с использованием пользовательских координат узлов. Координаты X задаются с помощью XData, координаты y задаются с помощью YDataи координаты z задаются с помощью ZData. Использовать EdgeLabel маркировка кромок с использованием весов кромок.

x = [0 0.5 -0.5 -0.5 0.5 0 1.5 0 2 -1.5 -2];
y = [0 0.5 0.5 -0.5 -0.5 2 0 -2 0 0 0];
z = [5 3 3 3 3 0 1 0 0 1 0];
plot(G,'XData',x,'YData',y,'ZData',z,'EdgeLabel',G.Edges.Weight)

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

Просмотрите график сверху.

view(2)

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

Создайте взвешенный график.

s = [1 1 1 1 2 2 3 4 4 5 6];
t = [2 3 4 5 3 6 6 5 7 7 7];
weights = [50 10 20 80 90 90 30 20 100 40 60];
G = graph(s,t,weights)
G = 
  graph with properties:

    Edges: [11x2 table]
    Nodes: [7x0 table]

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

LWidths = 5*G.Edges.Weight/max(G.Edges.Weight);
plot(G,'EdgeLabel',G.Edges.Weight,'LineWidth',LWidths)

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

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

s = [1 1 1 2 2 3 3 4 4 5 6 7];
t = [2 3 4 5 6 5 7 6 7 8 8 8];
G = digraph(s,t)
G = 
  digraph with properties:

    Edges: [12x1 table]
    Nodes: [8x0 table]

eLabels = {'x' 'y' 'z' 'y' 'z' 'x' 'z' 'x' 'y' 'z' 'y' 'x'};
nLabels = {'{0}','{x}','{y}','{z}','{x,y}','{x,z}','{y,z}','{x,y,z}'};
plot(G,'Layout','force','EdgeLabel',eLabels,'NodeLabel',nLabels)

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

Создание и печать направленного графика. Укажите выходной аргумент для plot для возврата дескриптора к GraphPlot объект.

s = [1 1 1 2 2 3 3 4 5 5 6 7 7 8 8 9 10 11];
t = [2 3 10 4 12 4 5 6 6 7 9 8 10 9 11 12 11 12];
G = digraph(s,t)
G = 
  digraph with properties:

    Edges: [18x1 table]
    Nodes: [12x0 table]

p = plot(G)

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

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: {1x12 cell}
     EdgeLabel: {}
         XData: [2.5000 1.5000 2.5000 2 3 2 3 3 2.5000 4 3.5000 2.5000]
         YData: [7 6 6 5 5 4 4 3 2 3 2 1]
         ZData: [0 0 0 0 0 0 0 0 0 0 0 0]

  Show all properties

Изменение цвета и маркера узлов.

p.Marker = 's';
p.NodeColor = 'r';

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

Увеличьте размер узлов.

p.MarkerSize = 7;

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

Измените стиль линий ребер.

p.LineStyle = '--';

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

Измените координаты x и y узлов.

p.XData = [2 4 1.5 3.5 1 3 1 2.1 3 2 3.1 4];
p.YData = [3 3 3.5 3.5 4 4 2 2 2 1 1 1];

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

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

свернуть все

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

Пример: G = graph(1,2)

Пример: G = digraph([1 2],[2 3])

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

Пример: '--or' использует красные маркеры узлов окружности и красные пунктирные линии в качестве ребер.

Пример: 'r*' использует в качестве краев красные маркеры узлов звездочек и сплошные красные линии.

Стиль линииОписание
-Сплошная линия
--Пунктирная линия
:Пунктирная линия
-.Черточно-точечная линия
МаркерОписание
'o'Круг
'+'Знак «Плюс»
'*'Звездочка
'.'Пункт
'x'Крест
'_'Горизонтальная линия
'|'Вертикальная линия
's'Квадрат
'd'Алмаз
'^'Треугольник, направленный вверх
'v'Треугольник, направленный вниз
'>'Прямоугольный треугольник
'<'Треугольник, указывающий влево
'p'Пентаграмма
'h'Hexagram
ЦветОписание

y

желтый

m

пурпурный

c

голубой

r

красный

g

зеленый

b

синий

w

белый

k

черный

Объект Axes. Если объект axes не указан, то plot использует текущие оси (gca).

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

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

Пример: p = plot(G,'EdgeColor','r','NodeColor','k','LineStyle','--')

Перечисленные здесь свойства графика являются только подмножеством. Полный список см. в разделе Свойства графика (Graph Plot Properties).

Примечание

ArrowSize влияет только на отображение направленных графиков, созданных с помощью digraph.

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

Пример: 15

Цветовые данные линий кромок, указанные как разделенная запятыми пара, состоящая из 'EdgeCData' и вектор с длиной, равной числу рёбер в графе. Значения в EdgeCData отображается линейно к цветам в текущей карте цветов, что приводит к различным цветам для каждого ребра на графике.

Цвет кромки, заданный как разделенная запятыми пара, состоящая из 'EdgeColor' и одно из этих значений:

  • 'none' - Кромки не нарисованы.

  • 'flat' - Цвет каждого края зависит от значения EdgeCData.

  • matrix - каждая строка представляет собой триплет RGB, представляющий цвет одного ребра. Размер матрицы: numedges(G)около-3.

  • Триплет 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') создает график с красными ребрами.

Метки кромок, заданные как разделенная запятыми пара, состоящая из 'EdgeLabel' и числовой вектор, массив ячеек символьных векторов или строковый массив. Длина EdgeLabel должно быть равно числу рёбер в графике. По умолчанию EdgeLabel является пустым массивом ячеек (метки границ не отображаются).

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

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

Пример: plot(G,'EdgeLabel',G.Edges.Weight) помечает ребра графика своими весами.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | cell | string

Метод компоновки графика, заданный как разделенная запятыми пара, состоящая из 'Layout' и один из вариантов в таблице. В таблице также перечислены совместимые пары имя-значение для дальнейшего уточнения каждого метода компоновки. См. раздел layout для получения дополнительной информации об этих парах имя-значение для конкретного макета.

ВыборОписаниеСпецифичные для компоновки пары «имя-значение»
'auto' (по умолчанию)

Автоматический выбор метода компоновки на основе размера и структуры графика.

'circle'

Круговая компоновка. Размещение узлов графика на окружности с центром в начале координат с радиусом 1.

'Center' - Центральный узел в круговой компоновке

'force'

Силовая компоновка [1]. Использует силы притяжения между соседними узлами и силы отталкивания между удаленными узлами.

'Iterations' - Количество итераций компоновки, направленных силами

'WeightEffect' - Влияние веса кромок на компоновку

'UseGravity' - Переключение силы тяжести для компоновок с несколькими компонентами

'XStart' - Начало координат X для узлов

'YStart' - Запуск координат Y для узлов

'layered'

Многоуровневая компоновка узлов [2], [3], [4]. Помещает узлы графа в набор слоев, открывая иерархическую структуру. По умолчанию слои продвигаются вниз (стрелки направленного ациклического графика указывают вниз).

'Direction' - Направление слоев

'Sources' - Узлы для включения в первый уровень

'Sinks' - Узлы для включения в последний уровень

'AssignLayers' - Метод назначения слоев

'subspace'

Компоновка узла встраивания подпространства [5]. Строит графики узлов графика в высокомерном вложенном подпространстве, а затем проецирует позиции обратно в 2-D. По умолчанию размер подпространства равен 100 или общему числу узлов, в зависимости от того, какое из них меньше.

'Dimension' - Размеры закладного подпространства

'force3'3-D силовая компоновка.

'Iterations' - Количество итераций компоновки, направленных силами

'WeightEffect' - Влияние веса кромок на компоновку

'UseGravity' - Переключение силы тяжести для компоновок с несколькими компонентами

'XStart' - Начало координат X для узлов

'YStart' - Запуск координат Y для узлов

'ZStart' - Начало координат Z для узлов

'subspace3'3-D компоновку встраивания подпространства.

'Dimension' - Размеры закладного подпространства

Пример: plot(G,'Layout','force3','Iterations',10)

Пример: plot(G,'Layout','subspace','Dimension',50)

Пример: plot(G,'Layout','layered')

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

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

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

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

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

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

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

Пример: 0.75

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

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

Пример: '+'

Пример: 'diamond'

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

Пример: 10

Цветовые данные маркеров узлов, указанные как разделенная запятыми пара, состоящая из 'NodeCData' и вектор с длиной, равной числу узлов в графе. Значения в NodeCData отображается линейно к цветам в текущей карте цветов, что приводит к различным цветам для каждого узла на графике.

Цвет узла, заданный как разделенная запятыми пара, состоящая из 'NodeColor' и одно из этих значений:

  • 'none' - Узлы не нарисованы.

  • 'flat' - Цвет каждого узла зависит от значения NodeCData.

  • matrix - каждая строка представляет собой триплет RGB, представляющий цвет одного узла. Размер матрицы: numnodes(G)около-3.

  • 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') создает график с черными узлами.

Метки узлов, указанные как разделенная запятыми пара, состоящая из 'NodeLabel' и числовой вектор, массив ячеек символьных векторов или строковый массив. Длина NodeLabel должно быть равно количеству узлов в графике. По умолчанию NodeLabel - массив ячеек, содержащий идентификаторы узлов для узлов графика:

  • Для узлов без имен (то есть G.Nodes не содержит Name variable), метки узлов являются значениями unique(G.Edges.EndNodes) содержится в массиве ячеек.

  • Для именованных узлов метки узлов: G.Nodes.Name'.

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

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

Пример: plot(G,'NodeLabel',G.Nodes.Name) маркирует узлы своими именами.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | cell | string

Примечание

XData и YData необходимо указать вместе, чтобы каждый узел имел допустимую (x, y) координату. При необходимости можно также указатьZData для 3-D координат.

x-координата узлов, заданная как разделенная запятыми пара, состоящая из 'XData' и вектор с длиной, равной числу узлов в графе.

Примечание

XData и YData необходимо указать вместе, чтобы каждый узел имел допустимую (x, y) координату. При необходимости можно также указатьZData для 3-D координат.

координата y узлов, заданная как разделенная запятыми пара, состоящая из 'YData' и вектор с длиной, равной числу узлов в графе.

Примечание

XData и YData необходимо указать вместе, чтобы каждый узел имел допустимую (x, y) координату. При необходимости можно также указатьZData для 3-D координат.

z-координата узлов, заданная как разделенная запятыми пара, состоящая из 'ZData' и вектор с длиной, равной числу узлов в графе.

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

свернуть все

График, возвращаемый как объект. Дополнительные сведения см. в разделе GraphPlot.

Вопросы совместимости

развернуть все

В R2018a изменилось поведение

Ссылки

[1] Фрухтерман, Т. и Э. Рейнгольд. «Рисование графика с помощью принудительного размещения». Программное обеспечение - практика и опыт. т. 21 (11), 1991, с. 1129-1164.

[2] Ганснер, Э., Э. Коутсофиос, С. Норт и К.-П. Во. «Методика рисования направленных графиков». Транзакции IEEE по программному обеспечению. Vol.19, 1993, стр 214–230.

[3] Барт, В., М. Юэнджер и П. Мутцель. «Простой и эффективный двухслойный перекрестный подсчет». Журнал алгоритмов и приложений графов. Vol.8 (2), 2004, стр 179–194.

[4] Брандес, У. и Б. Коепф. «Быстрое и простое назначение горизонтальных координат». LNCS. Том 2265, 2002, стр. 31-44.

[5] Я. Корен. «Рисование графиков собственными векторами: теория и практика». Компьютеры и математика с приложениями. т. 49, 2005, с. 1867-1888.

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