график

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

Синтаксис

plot(G)
plot(G,LineSpec)
plot(___,Name,Value)
plot(ax,___)
h = 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, чтобы изменить Маркер, 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];

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

свернуть все

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

Пример: G = график (1,2)

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

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

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

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

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

y

желтый

m

пурпурный

c

голубой

r

красный

g

зеленый

b

синий

w

белый

k

черный

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

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

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

Пример: p = график (G, 'EdgeColor', 'r', 'NodeColor', 'k', 'LineStyle'', - ')

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

Примечание

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

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

Пример: 15

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

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

  • 'none' Края не чертятся.

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

  • Триплет RGB или название цвета — Края используют заданный цвет.

    Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должны быть в диапазоне [0,1]; например, [0,4 0,6 0,7]. Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены варианты длинного и краткого наименований цветов и их эквивалентные значения RGB.

    ОпцияОписаниеЭквивалентный триплет RGB
    'красный' или 'r'Красный[1 0 0]
    'green' или 'g'Зеленый[0 1 0]
    'blue' или 'b'Синий[0 0 1]
    'yellow' или 'y'Желтый[1 1 0]
    'пурпурный' или 'm'Пурпурный[1 0 1]
    'голубой' или 'c'Голубой[0 1 1]
    'white' или 'w'Белый[1 1 1]
    'black' или 'k'Черный[0 0 0]

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

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

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

Пример: A, B, C

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

Пример: график (G, 'EdgeLabel', G.Edges.Weight) маркирует края графика их весами.

Типы данных: единственный | удваиваются | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | ячейка | строка

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

ОпцияОписаниеСпецифичные для размещения пары "имя-значение"
'auto' (значение по умолчанию)

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

'circle'

Круговое размещение. Помещает вершины графика в круг, центрируемый в начале координат с радиусом 1.

центр Центральный узел в круговом размещении

Сила

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

'Iterations' — Количество направленных на силу итераций размещения

'WeightEffect' — Воздействие веса ребра на размещении

'UseGravity' — Переключатель силы тяжести для размещений с несколькими компонентами

'XStart' Стартовые x-координаты для узлов

'YStart' Стартовые y-координаты для узлов

Многоуровневый

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

'Direction' — Направление уровней

'Sources' — Узлы, чтобы включать в первый уровень

'Sinks' — Узлы, чтобы включать в последний уровень

'AssignLayers' Метод присвоения уровня

Подпространство

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

'Dimension' — Размерность встроенного подпространства

'force3'3-D направленное на силу размещение.

'Iterations' — Количество направленных на силу итераций размещения

'WeightEffect' — Воздействие веса ребра на размещении

'UseGravity' — Переключатель силы тяжести для размещений с несколькими компонентами

'XStart' Стартовые x-координаты для узлов

'YStart' Стартовые y-координаты для узлов

'ZStart' Стартовые z-координаты для узлов

'subspace3'3-D размещение встраивания подпространства.

'Dimension' — Размерность встроенного подпространства

Пример: график (G, 'Размещение', 'force3', 'Итерации', 10)

Пример: график (G, 'Размещение', 'подпространство', 'Размерность', 50)

Пример: график (G, 'Размещение', 'разделенное на уровни')

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

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

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

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

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

'none'Никакая строкаНикакая строка

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

Пример: 0.75

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

ЗначениеОписание
OКруг
'+'Знак «плюс»
'*'Звездочка
'.'Точка
XКрест
square' или 's'Квадрат
'diamond' или 'd'Ромб
'^'Треугольник, направленный вверх
VНисходящий треугольник
'>'Треугольник, указывающий вправо
'<'Треугольник, указывающий влево
pentagram' или 'p'Пятиконечная звезда (пентаграмма)
'hexagram' or 'h'Шестиконечная звезда (гексаграмма)
'none'Никакие маркеры

Пример: '+'

Пример: 'ромб'

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

Пример: 10

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

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

  • 'none' Узлы не чертятся.

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

  • Триплет RGB или название цвета — Узлы используют заданный цвет.

    Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должны быть в диапазоне [0,1]; например, [0,4 0,6 0,7]. Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены варианты длинного и краткого наименований цветов и их эквивалентные значения RGB.

    ОпцияОписаниеЭквивалентный триплет RGB
    'красный' или 'r'Красный[1 0 0]
    'green' или 'g'Зеленый[0 1 0]
    'blue' или 'b'Синий[0 0 1]
    'yellow' или 'y'Желтый[1 1 0]
    'пурпурный' или 'm'Пурпурный[1 0 1]
    'голубой' или 'c'Голубой[0 1 1]
    'white' или 'w'Белый[1 1 1]
    'black' или 'k'Черный[0 0 0]

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

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

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

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

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

Пример: A, B, C

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

Пример: график (G, 'NodeLabel', G.Nodes. Назовите), маркирует узлы их именами.

Типы данных: единственный | удваиваются | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | ячейка | строка

Примечание

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.

Ссылки

[1] Фрачтермен, T. и Э. Рейнголд. “Рисунок графика Направленным на силу Размещением”. Программное обеспечение — Practice & Experience. Издание 21 (11), 1991, стр 1129–1164.

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

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

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

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

Введенный в R2015b

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