Измените размещение графика графика
layout(H)
layout(H,method)
layout(H,method,Name,Value)
layout(
изменяется размещение графика строят H
)H
при помощи автоматического выбора метода макета на основе структуры графика. Функция layout
изменяет свойства XData
и YData
H
.
layout(
дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, H
,method
,Name,Value
)layout(H,'force','Iterations',N)
задает количество итераций, чтобы использовать в вычислении размещения силы, и layout(H,'layered','Sources',S)
использует многоуровневое размещение с исходными узлами S
, включенный в первый слой.
Создайте и постройте график с помощью размещения 'force'
.
s = [1 1 1 1 1 6 6 6 6 6]; t = [2 3 4 5 6 7 8 9 10 11]; G = graph(s,t); h = plot(G,'Layout','force');
Измените размещение, чтобы быть значением по умолчанию, которое plot
определяет на основе структуры и свойств графика. Результат совпадает с использованием plot(G)
.
layout(h)
Создайте и постройте график с помощью размещения 'layered'
.
s = [1 1 1 2 2 3 3 4 5 5 6 7]; t = [2 4 5 3 6 4 7 8 6 8 7 8]; G = graph(s,t); h = plot(G,'Layout','layered');
Измените размещение графика, чтобы использовать метод 'subspace'
.
layout(h,'subspace')
Создайте и постройте график с помощью метода макета 'layered'
.
s = [1 1 1 2 3 3 3 4 4]; t = [2 4 5 6 2 4 7 8 1]; G = digraph(s,t); h = plot(G,'Layout','layered');
Используйте функцию layout
, чтобы совершенствовать иерархическое размещение путем определения исходных узлов и горизонтальной ориентации.
layout(h,'layered','Direction','right','Sources',[1 4])
Постройте график, который имеет несколько компонентов, и затем покажите, как использовать опцию 'UseGravity'
, чтобы улучшить визуализацию.
Создайте и постройте график, который имеет 150 узлов, разделенных на многие разъединенные компоненты. MATLAB® размечает компоненты графика на сетке.
s = [1 3 5 7 7 10:100]; t = [2 4 6 8 9 randi([10 100],1,91)]; G = graph(s,t,[],150); h = plot(G);
Обновите координаты макета объекта диаграмм и задайте 'UseGravity'
как true
так, чтобы компоненты были размечены радиально вокруг источника с большим количеством пробела, выделенного для больших компонентов.
layout(h,'force','UseGravity',true)
Постройте график с помощью пары "имя-значение" 'WeightEffect'
, чтобы сделать длину ребер графика пропорциональной их весам.
Создайте и постройте ориентированного графа со взвешенными ребрами.
s = [1 1 1 1 1 2 2 2 3 3 3 3 3]; t = [2 4 5 6 7 3 8 9 10 11 12 13 14]; weights = randi([1 20],1,13); G = graph(s,t,weights); p = plot(G,'Layout','force','EdgeLabel',G.Edges.Weight);
Повторно вычислите размещение графика с помощью пары "имя-значение" 'WeightEffect'
, так, чтобы длина каждого ребра была пропорциональна своему весу. Это делает его так, чтобы ребра с самыми большими весами были самыми длинными.
layout(p,'force','WeightEffect','direct')
method
— Метод макета'auto'
(значение по умолчанию) | 'circle'
| 'force'
| 'layered'
| 'subspace'
| 'force3'
| 'subspace3'
Метод макета, заданный как одна из опций в таблице. Таблица также приводит совместимые пары "имя-значение", чтобы далее совершенствовать каждый метод макета.
Опция | Описание | Специфичные для размещения пары "имя-значение" |
---|---|---|
'auto' (значение по умолчанию) |
Автоматический выбор метода макета на основе размера и структуры графика. |
— |
'circle' |
Круговое размещение. Помещает вершины графика в круг, сосредоточенный в начале координат с радиусом 1. |
|
'force' |
Направленное на силу размещение [1]. Использует привлекательные силы между смежными узлами и отталкивающие силы между удаленными узлами. |
|
'layered' |
Многоуровневое размещение [2], [3], [4]. Помещает вершины графика в набор слоев, показывая иерархическую структуру. По умолчанию слои прогрессируют вниз (стрелки направленной точки графа без петель вниз). |
|
'subspace' |
Размещение встраивания подпространства [5]. Строит вершины графика в высоко-размерном встроенном подпространстве, и затем проектирует положения назад в 2D. По умолчанию размерность подпространства или 100 или общее количество узлов, какой бы ни меньше. |
|
'force3' | 3-D направленное на силу размещение. |
|
'subspace3' | 3-D размещение встраивания подпространства. |
|
Пример: layout(H,'layered')
Пример: layout(H,'force3','Iterations',10)
Пример: layout(H,'subspace','Dimension',50)
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
layout(H,'subspace','Dimension',200)
'Iterations'
— Количество направленных на силу итераций размещения100
(значение по умолчанию) | положительное скалярное целое числоКоличество направленных на силу итераций размещения, заданных как пара, разделенная запятой, состоящая из 'Iterations'
и положительного скалярного целого числа.
Эта опция доступна только, когда method
является 'force'
или 'force3'
.
Пример: layout(H,'force','Iterations',250)
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
'WeightEffect'
— Воздействие веса ребра на размещении'none'
(значение по умолчанию) | 'direct'
| 'inverse'
Воздействие веса ребра на размещении, заданном как пара, разделенная запятой, состоящая из 'WeightEffect'
и одно из значений в этой таблице. Если существует несколько ребер между двумя узлами (как в ориентированном графе с ребром в каждом направлении или мультиграфе), то веса суммированы прежде, чем вычислить 'WeightEffect'
.
Эта опция доступна только, когда method
является 'force'
или 'force3'
.
Значение |
Описание |
---|---|
|
Вес ребра не влияет на размещение. |
|
Длина ребра пропорциональна весу ребра, |
|
Длина ребра обратно пропорциональна весу ребра, |
Пример: layout(H,'force','WeightEffect','inverse')
'UseGravity'
— Переключатель силы тяжести для размещений с несколькими компонентами'on'
| 'off'
| true
| false
Переключатель силы тяжести для размещений с несколькими компонентами, заданными как пара, разделенная запятой, состоящая из 'UseGravity'
и 'on'
, 'off'
, true
или false
.
По умолчанию MATLAB® размечает графики с несколькими компонентами на сетке. Сетка может затенить детали больших компонентов, поскольку им дают ту же сумму пробела как меньшие компоненты. С набором 'UseGravity'
к 'on'
или true
, несколько компонентов вместо этого размечаются радиально вокруг источника. Это размещение распространяет компоненты более естественным способом и обеспечивает больше пробела для больших компонентов.
Эта опция доступна только, когда method
является 'force'
или 'force3'
.
Пример: layout(H,'force','UseGravity',true)
Типы данных: char
| logical
'XStart'
Стартовые x-координаты для узловСтартовые x-координаты для узлов, заданных как пара, разделенная запятой, состоящая из 'XStart'
и вектор координат узла. Используйте эту опцию вместе с 'YStart'
, чтобы задать 2D стартовые координаты (или с 'YStart'
и 'ZStart'
, чтобы задать 3-D стартовые координаты), прежде чем итерации направленного на силу алгоритма сменят положения узла.
Эта опция доступна только, когда method
является 'force'
или 'force3'
.
Пример: layout(H,'force','XStart',x,'YStart',y)
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
'YStart'
Стартовые y-координаты для узловСтартовые y-координаты для узлов, заданных как пара, разделенная запятой, состоящая из 'YStart'
и вектор координат узла. Используйте эту опцию вместе с 'XStart'
, чтобы задать 2D стартовые координаты (или с 'XStart'
и 'ZStart'
, чтобы задать 3-D стартовые координаты), прежде чем итерации направленного на силу алгоритма сменят положения узла.
Эта опция доступна только, когда method
является 'force'
или 'force3'
.
Пример: layout(H,'force','XStart',x,'YStart',y)
Пример: layout(H,'force','XStart',x,'YStart',y,'ZStart',z)
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
'ZStart'
Стартовые z-координаты для узловСтартовые z-координаты для узлов, заданных как пара, разделенная запятой, состоящая из 'ZStart'
и вектор координат узла. Используйте эту опцию вместе с 'XStart'
и 'YStart'
, чтобы задать стартовый x, y и координаты узла z, прежде чем итерации направленного на силу алгоритма сменят положения узла.
Эта опция доступна только, когда method
является 'force3'
.
Пример: layout(H,'force','XStart',x,'YStart',y,'ZStart',z)
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
'Direction'
— Направление слоев'down'
(значение по умолчанию) | 'up'
| 'left'
| 'right'
Направление слоев, заданных как пара, разделенная запятой, состоящая из 'Direction'
и или 'down'
, 'up'
, 'left'
или 'right'
. Для направленных нециклических графиков (DAG) стрелки показывают в обозначенном направлении.
Эта опция доступна только, когда method
является 'layered'
.
Пример: layout(H,'layered','Direction','up')
'Sources'
— Узлы, чтобы включать в первый слойУзлы, чтобы включать в первый слой, заданный как пара, разделенная запятой, состоящая из 'Sources'
и одного или нескольких индексов узла или имен узла.
Эта таблица показывает различные способы относиться к одному или нескольким узлам или их числовыми индексами узла или их именами узла.
Форма | Один узел | Несколько узлов |
---|---|---|
Индекс узла | Скаляр Пример 1 | Вектор Пример: |
Имя узла | Символьный вектор Пример: | Массив ячеек из символьных векторов Пример: |
Скаляр строки Пример: | StringArray Пример: |
Эта опция доступна только, когда method
является 'layered'
.
Пример: layout(H,'layered','Sources',[1 3 5])
'Sinks'
— Узлы, чтобы включать в последний слойУзлы, чтобы включать в последний слой, заданный как пара, разделенная запятой, состоящая из 'Sinks'
и одного или нескольких индексов узла или имен узла.
Эта опция доступна только, когда method
является 'layered'
.
Пример: layout(H,'layered','Sinks',[2 4 6])
'AssignLayers'
Метод присвоения слоя'auto'
(значение по умолчанию) | 'asap'
| 'alap'
Метод присвоения слоя, заданный как пара, разделенная запятой, состоящая из 'AssignLayers'
и одна из опций в этой таблице.
Опция | Описание |
---|---|
'auto' (значение по умолчанию) | Присвоение узла использует или 'asap' или 'alap' , какой бы ни более компактно. |
'asap' | Как можно скорее. Каждый узел присвоен первому возможному слою, учитывая ограничение, что все его предшественники должны быть в более ранних слоях. |
'alap' | Уже в возможном. Каждый узел присвоен последнему слою, учитывая ограничение, что все его преемники должны быть в более поздних слоях. |
Эта опция доступна только, когда method
является 'layered'
.
Пример: layout(H,'layered','AssignLayers','alap')
'Dimension'
— Размерность встроенного подпространстваРазмерность встроенного подпространства, заданного как пара, разделенная запятой, состоящая из 'Dimension'
и положительного скалярного целого числа.
Целочисленным значением по умолчанию является min([100, numnodes(G)])
.
Для размещения 'subspace'
целое число должно быть больше, чем или равным 2.
Для размещения 'subspace3'
целое число должно быть больше, чем или равным 3.
В обоих случаях целое число должно быть меньше, чем количество узлов.
Эта опция доступна только, когда method
является 'subspace'
или 'subspace3'
.
Пример: layout(H,'subspace','Dimension',d)
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
центр
Центральный узел в круговом размещенииЦентральный узел в круговом размещении, заданном как пара, разделенная запятой, состоящая из 'Center'
и одно из значений в этой таблице.
Значение | Пример |
---|---|
Скалярный индекс узла | 1 |
Имя узла вектора символов | 'A' |
Представьте скалярное имя узла в виде строки | "A" |
Эта опция доступна только, когда method
является 'circle'
.
Пример: layout(H,'circle','Center',3)
помещает узел три в центре.
Пример: layout(H,'circle','Center','Node1')
помещает узел под названием 'Node1'
в центре.
Используйте пару "имя-значение" Layout
, чтобы изменить размещение графика, когда вы построите его. Например, plot(G,'Layout','circle')
строит график G
с круговым размещением.
При использовании 'force'
или методов макета 'force3'
, лучшая практика состоит в том, чтобы использовать больше итераций с алгоритмом вместо того, чтобы использовать XStart
, YStart
и ZStart
, чтобы перезапустить алгоритм с помощью предыдущих выходных параметров. Результат выполнения алгоритма с 100 итерациями отличается по сравнению с выполнением 50 итераций и затем перезапуском алгоритма от конечных положений, чтобы выполнить еще 50 итераций.
[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.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.