plot

Постройте вершины графика и ребра

Описание

пример

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

пример

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

пример

plot(___,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)

Создайте и постройте график. Задайте LineSpec введите, чтобы изменить Marker'NodeColor' , и/или LineStyle из графика графика.

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

Создайте ориентированного графа, и затем постройте график с помощью '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')

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

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)

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

view(2)

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

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)

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

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)

Создайте и постройте ориентированного графа. Задайте выходной аргумент 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)

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';

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

p.MarkerSize = 7;

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

p.LineStyle = '--';

Измените координаты 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];

Входные параметры

свернуть все

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

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

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

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

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

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

СимволСтиль линии
-Сплошная линия (значение по умолчанию)
--Пунктирная линия
:Пунктирная линия
-.Штрихпунктирная линия
СимволМаркер
oКруг
+Знак «плюс»
*Звездочка
.Точка
xКрест
sКвадрат
dРомб
^Треугольник, направленный вверх
vНисходящий треугольник
>Треугольник, указывающий вправо
<Треугольник, указывающий влево
pПентаграмма
hГексаграмма
СимволЦвет

y

желтый

m

пурпурный

c

голубой

r

красный

g

зеленый

b

синий

w

белый

k

черный

Объект осей. Если вы не задаете объект осей, то plot использует текущую систему координат (gca).

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

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

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

Свойства графика, перечисленные здесь, являются только подмножеством. Для полного списка см. Свойства GraphPlot.

Примечание

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

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

Пример: 15

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

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

  • 'none' — Ребра не чертятся.

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

  • матрица — Каждой строкой является триплет 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]. Строит вершины графика в высоко-размерном встроенном подпространстве, и затем проектирует положения назад в 2D. По умолчанию размерность подпространства или 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' и один из стилей линии, перечисленных в этой таблице, или как массив ячеек или вектор строки таких значений. Задайте массив ячеек из символьных векторов или вектор строки, чтобы использовать различные стили линии в каждом ребре.

'characters'Стиль линииПолучившаяся линия
'-'Сплошная линия

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

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

'-.'Штрих-пунктирная линия

'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.

  • матрица — Каждой строкой является триплет 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 переменная), метки узла являются значениями 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] Фрачтермен, T. и Э. Рейнголд. “Рисунок графика Направленным на силу Размещением”. Программное обеспечение — Practice & Experience. Издание 21 (11), 1991, стр 1129–1164.

[2] Gansner, E., Э. Коутсофайос, S. Север и K.-P Vo. “Метод для Рисования Ориентированных графов”. Транзакции IEEE на Разработке программного обеспечения. Vol.19, 1993, стр 214–230.

[3] Барт, W., М. Джуенджер и П. Муцель. “Простой и Эффективный Перекрестный подсчет Двойного слоя”. Журнал Алгоритмов Графика и Приложений. Vol.8 (2), 2004, стр 179–194.

[4] Brandes, U. и Б. Коепф. “Быстрое и Простое Присвоение Горизонтальной координаты”. LNCS. Издание 2265, 2002, стр 31–44.

[5] И. Корен. “Чертя Графики Собственными векторами: Теория и Практика”. Компьютеры и Математика с Приложениями. Издание 49, 2005, стр 1867–1888.

Введенный в R2015b