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)

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

черный

Объект осей. Если вы не задаете объект осей, то 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)-by- 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' - Starting x -cordinates для узлов

'YStart' - Starting y -cordinates для узлов

'layered'

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

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

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

'Sinks' - Узлы, включаемые в последний слой

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

'subspace'

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

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

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

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

'WeightEffect' - Эффект весов кромок на размещение

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

'XStart' - Starting x -cordinates для узлов

'YStart' - Starting y -cordinates для узлов

'ZStart' - Starting z -cordinates для узлов

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

  • матрица - каждая строка является триплетом RGB, представляющим цвет одного узла. Размер матрицы numnodes(G)-by- 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] Fruchterman, T., and E. Reingold. «Чертеж графика по направленному на силу размещению». Программное обеспечение - Практика и опыт. Том 21 (11), 1991, стр. 1129-1164.

[2] Gansner, E., E. Koutsofios, S. North, and K.-P Vo. «A Метода for Drawing Ориентированных графов». Транзакции IEEE по проектированию программного обеспечения. Vol.19, 1993, стр 214–230.

[3] Barth, W., M. Juenger, and P. Mutzel. Простой и эффективный перекрестный подсчет двоичных компонентов. Журнал алгоритмов и приложений графика. Vol.8 (2), 2004, стр 179–194.

[4] Brandes, U., and B. Koepf. «Быстрое и простое горизонтальное назначение координат». LNCS. Том 2265, 2002, стр. 31-44.

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

Введенный в R2015b