График графика узлы и ребра
plot(___,
использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение", используя любую из комбинаций входных аргументов в предыдущих синтаксисах. Для примера, Name,Value
)plot(G,'Layout','circle')
строит график кругового кольцевого размещения графа, и plot(G,'XData',X,'YData',Y,'ZData',Z)
задает (X,Y,Z)
координаты узлов графика.
plot(
графики в осях заданные ax
,___)ax
вместо в текущую систему координат (gca
). Опция, ax
, может предшествовать любой комбинации входных аргументов в предыдущих синтаксисах.
Создайте граф с помощью разреженной матрицы смежности, а затем постройте график.
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];
LineSpec
- Стиль линии, символ маркера и цветСтиль линии, символ маркера и цвет, заданный как вектор символов или строковый вектор. Символы могут появиться в любом порядке, и можно опустить одну или несколько характеристик. Если вы опускаете стиль линии, на графике будут показаны сплошные линии для ребер графика.
Пример: '--or'
использует маркеры узла красного круга и красные штриховые линии в качестве ребер.
Пример: 'r*'
использует красные маркеры узла звездочки и сплошные красные линии в качестве ребер.
Стиль линии | Описание |
---|---|
- | Сплошная линия |
-- | Штриховая линия |
: | Пунктирная линия |
-. | Штрих-точка линия |
Маркер | Описание |
---|---|
'o' | Круг |
'+' | Плюс знак |
'*' | Звездочка |
'.' | Точка |
'x' | Крест |
'_' | Горизонтальная линия |
'|' | Вертикальная линия |
's' | Квадрат |
'd' | Алмаз |
'^' | Направленный вверх треугольник |
'v' | Нисходящий треугольник |
'>' | Треугольник , указывающий вправо |
'<' | Треугольник , указывающий влево |
'p' | Пентаграмма |
'h' | Hexagram |
Цвет | Описание |
---|---|
| желтый |
| пурпурный |
| голубой |
| красный |
| зеленый |
| синий |
| белый |
| черный |
ax
- Объект осейОбъект осей. Если вы не задаете объект осей, то plot
использует текущую систему координат (gca
).
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
p = plot(G,'EdgeColor','r','NodeColor','k','LineStyle','--')
Перечисленные здесь свойства графика являются только подмножеством. Полный список см. в разделе Свойства GraphPlot.
'ArrowSize'
- Размер стрелыПримечание
ArrowSize
влияет только на отображение ориентированных графов, созданных с помощью digraph
.
Размер стрелы, заданный как разделенная разделенными запятой парами, состоящая из 'ArrowSize'
и положительное значение в единицах модулей точки. Значение по умолчанию ArrowSize
является 7
для графиков с 100 или меньшим количеством узлов и 4
для графиков с более чем 100 узлами.
Пример: 15
'EdgeCData'
- Цветовые данные краевых линийЦветовые данные краевых линий, заданные как разделенная разделенными запятой парами, состоящая из 'EdgeCData'
и вектор с длиной, равной количеству ребер в графике. Значения в EdgeCData
линейно сопоставить с цветами в текущей палитре, получая различные цвета для каждого края в построенную диаграмму.
'EdgeColor'
- Цвет ребра[0 0.4470 0.7410]
(дефолт) | Триплет RGB | шестнадцатеричный цветовой код | название цвета | матрица | 'flat'
| 'none'
Цвет ребра, заданный как разделенная разделенными запятой парами, состоящая из '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
должно быть равно количеству ребер в графике. По умолчанию 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'
- Метод размещения графика'auto'
(по умолчанию) | 'circle'
| 'force'
| 'layered'
| 'subspace'
| 'force3'
| 'subspace3'
Метод размещения графика, заданный как разделенная разделенными запятой парами, состоящая из 'Layout'
и один из опций в таблице. В таблице также перечислены совместимые пары "имя-значение" для дальнейшего уточнения каждого метода размещения. См. layout
Страница с описанием для получения дополнительной информации об этих специфичных для макета парах "имя-значение".
Опция | Описание | Специфичные для макета Пары "имя-значение" |
---|---|---|
'auto' (по умолчанию) |
Автоматический выбор метода размещения на основе размера и структуры графика. |
— |
'circle' |
Круговое размещение. Размещение узлов графика на окружности с центром в источник с радиусом 1. |
|
'force' |
Ориентированный на силу размещение [1]. Использует силы притяжения между смежными узлами и силы отталкивания между удаленными узлами. |
|
'layered' |
Слоистое размещение узла [2], [3], [4]. Помещает узлы графика в набор слоев, раскрывая иерархическую структуру. По умолчанию слои прогрессируют вниз (стрелы направленного ациклического графика точки вниз). |
|
'subspace' |
Вложенный узел подпространства размещения [5]. Строит графики графика узлов в высокомерном вложенном подпространстве, а затем проецирует положения назад в 2-D. По умолчанию размерность подпространства либо 100, либо общее число узлов, в зависимости от того, что меньше. |
|
'force3' | 3-D ориентированную на силу размещение. |
|
'subspace3' | 3-D вложенные размещения подпространства. |
|
Пример: plot(G,'Layout','force3','Iterations',10)
Пример: plot(G,'Layout','subspace','Dimension',50)
Пример: plot(G,'Layout','layered')
'LineStyle'
- Стиль линии'-'
(по умолчанию) | '--'
| ':'
| '-.'
| 'none'
| массив ячеек | строковый векторСтиль линии, заданный как разделенная разделенными запятой парами, состоящая из 'LineStyle'
и один из стилей линии, перечисленных в этой таблице, или как массив ячеек или строковый вектор таких значений. Задайте массив ячеек из векторов символов или строкового вектора, чтобы использовать различные стили линии для каждого ребра.
Персонажи | Стиль линии | Результирующая линия |
---|---|---|
'-' | Сплошная линия |
|
'--' | Штриховая линия |
|
':' | Пунктирная линия |
|
'-.' | Штрих-пунктирная линия |
|
'none' | Нет линии | Нет линии |
'LineWidth'
- Ширина краевой линии0.5
(по умолчанию) | положительное значение | векторШирина ребра, заданная как разделенная разделенными запятой парами, состоящая из 'LineWidth'
и положительное значение в модулях точек или векторе таких значений. Задайте вектор, чтобы использовать разную ширину линии для каждого ребра в графике.
Пример: 0.75
'Marker'
- Символ маркера узла'o'
(по умолчанию) | вектор символов | массив ячеек | строковый векторСимвол маркера узла, заданный как разделенная разделенными запятой парами, состоящая из 'Marker'
и один из векторов символов, перечисленных в этой таблице, или как массив ячеек или строковый вектор таких значений. По умолчанию для узлов графика используются круговые маркеры. Задайте массив ячеек из векторов символов или строкового вектора, чтобы использовать различные маркеры для каждого узла.
Значение | Описание |
---|---|
'o' | Круг |
'+' | Плюс знак |
'*' | Звездочка |
'.' | Точка |
'x' | Крест |
'_' | Горизонтальная линия |
'|' | Вертикальная линия |
'square' или 's' | Квадрат |
'diamond' или 'd' | Алмаз |
'^' | Направленный вверх треугольник |
'v' | Нисходящий треугольник |
'>' | Треугольник , указывающий вправо |
'<' | Треугольник , указывающий влево |
'pentagram' или 'p' | Пятиконечная звезда (пентаграмма) |
'hexagram' или 'h' | Шестиконечная звезда (гексаграмма ) |
'none' | Маркеров нет |
Пример: '+'
Пример: 'diamond'
'MarkerSize'
- Размер маркера узлаРазмер маркера узла, заданный как разделенная разделенными запятой парами, состоящая из 'MarkerSize'
и положительное значение в точках модулей или как вектор таких значений. Укажите вектор, чтобы использовать различные размеры маркеров для каждого узла в графике. Значение по умолчанию MarkerSize
4 для графиков с 100 или менее узлами и 2
для графиков с более чем 100 узлами.
Пример: 10
'NodeCData'
- Цветовые данные маркеров узловЦветовые данные маркеров узлов, заданные как разделенная разделенными запятой парами, состоящая из 'NodeCData'
и вектор с длиной, равной числу узлов в графике. Значения в NodeCData
линейно сопоставить с цветами в текущей палитре, получая различные цвета для каждого узла в построенной диаграмме.
'NodeColor'
- Цвет узла[0 0.4470 0.7410]
(дефолт) | Триплет RGB | шестнадцатеричный цветовой код | название цвета | матрица | 'flat'
| 'none'
Цвет узла, заданный как разделенная разделенными запятой парами, состоящая из '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
должно быть равно числу узлов в графике. По умолчанию 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'
- x-координата узловПримечание
XData
и YData
должны быть заданы вместе, чтобы каждый узел имел допустимую (x, y) координату. Опционально можно также задать ZData
для 3-D координат.
x-координата узлов, заданная как разделенная разделенными запятой парами, состоящая из 'XData'
и вектор с длиной, равной числу узлов в графике.
'YData'
- y-координата узловПримечание
XData
и YData
должны быть заданы вместе, чтобы каждый узел имел допустимую (x, y) координату. Опционально можно также задать ZData
для 3-D координат.
y-координата узлов, заданная как разделенная разделенными запятой парами, состоящая из 'YData'
и вектор с длиной, равной числу узлов в графике.
'ZData'
- z-координата узловПримечание
XData
и YData
должны быть заданы вместе, чтобы каждый узел имел допустимую (x, y) координату. Опционально можно также задать ZData
для 3-D координат.
z-координата узлов, заданная как разделенная разделенными запятой парами, состоящая из 'ZData'
и вектор с длиной, равной числу узлов в графике.
h
- График графикаGraphPlot
объектГрафик графика, возвращенный как объект. Для получения дополнительной информации смотрите 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.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.