Измените размещение графика графика
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
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
layout(H,'subspace','Dimension',200)
'Iterations'
— Количество направленных на силу итераций размещения
(значение по умолчанию) | положительное скалярное целое числоКоличество направленных на силу итераций размещения в виде разделенной запятой пары, состоящей из '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'
— Переключатель силы тяжести для размещений с несколькими компонентами'off'
или false
(значение по умолчанию) | 'on'
или true
Переключатель силы тяжести для размещений с несколькими компонентами в виде разделенной запятой пары, состоящей из 'UseGravity'
и любой 'off'
, 'on'
TRUE
, или false
. Значение 'on'
эквивалентно true
, и 'off'
эквивалентно 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 | Вектор Пример: |
Имя узла | Символьный вектор Пример: | Массив ячеек из символьных векторов Пример: |
Скаляр строки Пример: | Массив строк Пример: |
Эта опция доступна только когда 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'
— Центральный узел в круговом размещенииЦентральный узел в круговом размещении в виде разделенной запятой пары, состоящей из '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.