Измените размещение графика графика
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'onTRUE, или 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.