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