размещение

Измените размещение графика графика

Синтаксис

layout(H)
layout(H,method)
layout(H,method,Name,Value)

Описание

пример

layout(H) изменяет размещение графика графика H при помощи автоматического выбора метода макета на основе структуры графика. Функция layout изменяет свойства XData и YData H.

пример

layout(H,method) опционально задает метод макета. method может быть 'circle', 'force', 'layered', 'subspace', 'force3' или 'subspace3'.

пример

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')

Входные параметры

свернуть все

Введите график графика, заданный как объект GraphPlot. Используйте graph или функции digraph, чтобы создать график, и затем использовать plot с выходным аргументом, чтобы возвратить объект GraphPlot.

Пример: H = график (G)

Метод макета, заданный как одна из опций в таблице. Таблица также приводит совместимые Пары "имя-значение", чтобы далее совершенствовать каждый метод макета.

ОпцияОписаниеСпецифичные для размещения пары "имя-значение"
'auto' (значение по умолчанию)

Автоматический выбор метода макета на основе размера и структуры графика.

'circle'

Круговое размещение. Помещает вершины графика в круг, центрируемый в начале координат с радиусом 1.

центр Центральный узел в круговом размещении

Сила

Направленное на силу размещение [1]. Использует привлекательные силы между смежными узлами и отталкивающие силы между удаленными узлами.

'Iterations' — Количество направленных на силу итераций размещения

'WeightEffect' — Воздействие веса ребра на размещении

'UseGravity' — Переключатель силы тяжести для размещений с несколькими компонентами

'XStart' Стартовые x-координаты для узлов

'YStart' Стартовые y-координаты для узлов

Многоуровневый

Многоуровневое размещение [2], [3], [4]. Помещает вершины графика в набор уровней, показывая иерархическую структуру. По умолчанию уровни прогрессируют вниз (стрелки направленной точки графа без петель вниз).

'Direction' — Направление уровней

'Sources' — Узлы, чтобы включать в первый уровень

'Sinks' — Узлы, чтобы включать в последний уровень

'AssignLayers' Метод присвоения уровня

Подпространство

Размещение встраивания подпространства [5]. Строит график вершин графика в высоко-размерном встроенном подпространстве, и затем проектирует положения назад в 2D. По умолчанию размерность подпространства или 100 или общее количество узлов, какой бы ни меньше.

'Dimension' — Размерность встроенного подпространства

'force3'3-D направленное на силу размещение.

'Iterations' — Количество направленных на силу итераций размещения

'WeightEffect' — Воздействие веса ребра на размещении

'UseGravity' — Переключатель силы тяжести для размещений с несколькими компонентами

'XStart' Стартовые x-координаты для узлов

'YStart' Стартовые y-координаты для узлов

'ZStart' Стартовые z-координаты для узлов

'subspace3'3-D размещение встраивания подпространства.

'Dimension' — Размерность встроенного подпространства

Пример: размещение (H, 'разделенный на уровни')

Пример: размещение (H, 'force3', 'Итерации', 10)

Пример: размещение (H, 'подпространство', 'Размерность', 50)

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: размещение (H, 'подпространство', 'Размерность', 200)

Сила

свернуть все

Количество направленных на силу итераций размещения, заданных как пара, разделенная запятой, состоящая из 'Iterations' и положительного скалярного целого числа.

Эта опция доступна только, когда method является 'force' или 'force3'.

Пример: размещение (H, 'сила', 'Итерации', 250)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Воздействие веса ребра на размещении, заданном как пара, разделенная запятой, состоящая из 'WeightEffect' и одно из значений в этой таблице. Если существует несколько краев между двумя узлами (как в ориентированном графе с краем в каждом направлении или мультиграфе), то веса суммированы прежде, чем вычислить 'WeightEffect'.

Эта опция доступна только, когда method является 'force' или 'force3'.

Значение

Описание

'none' (значение по умолчанию)

Вес ребра не влияет на размещение.

'direct'

Граничная длина пропорциональна весу ребра, G.Edges.Weight. Больший вес ребра производит более длинные края.

'inverse'

Граничная длина обратно пропорциональна весу ребра, 1./G.Edges.Weight. Больший вес ребра производит более короткие края.

Пример: размещение (H, 'сила', 'WeightEffect', 'инверсия')

Переключатель силы тяжести для размещений с несколькими компонентами, заданными как пара, разделенная запятой, состоящая из 'UseGravity' и 'on', 'off', true или false.

По умолчанию MATLAB® размечает графики с несколькими компонентами на сетке. Сетка может затенить детали больших компонентов, поскольку им дают ту же сумму пробела как меньшие компоненты. С набором 'UseGravity' к 'on' или true, несколько компонентов вместо этого размечаются радиально вокруг источника. Это распространяет компоненты более естественным способом и обеспечивает больше пробела для больших компонентов.

Эта опция доступна только, когда method является 'force' или 'force3'.

Пример: размещение (H, 'сила', 'UseGravity', верный)

Типы данных: char | логический

Стартовые x-координаты для узлов, заданных как пара, разделенная запятой, состоящая из 'XStart' и вектор координат узла. Используйте эту опцию вместе с 'YStart', чтобы задать 2D стартовые координаты (или с 'YStart' и 'ZStart', чтобы задать 3-D стартовые координаты), прежде чем итерации направленного на силу алгоритма сменят положения узла.

Эта опция доступна только, когда method является 'force' или 'force3'.

Пример: размещение (H, 'сила', 'XStart', x, 'YStart', y)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Стартовые y-координаты для узлов, заданных как пара, разделенная запятой, состоящая из 'YStart' и вектор координат узла. Используйте эту опцию вместе с 'XStart', чтобы задать 2D стартовые координаты (или с 'XStart' и 'ZStart', чтобы задать 3-D стартовые координаты), прежде чем итерации направленного на силу алгоритма сменят положения узла.

Эта опция доступна только, когда method является 'force' или 'force3'.

Пример: размещение (H, 'сила', 'XStart', x, 'YStart', y)

Пример: размещение (H, 'сила', 'XStart', x, 'YStart', y, 'ZStart', z)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Стартовые z-координаты для узлов, заданных как пара, разделенная запятой, состоящая из 'ZStart' и вектор координат узла. Используйте эту опцию вместе с 'XStart' и 'YStart', чтобы задать запуск x, y, и z координаты узла, прежде чем итерации направленного на силу алгоритма сменят положения узла.

Эта опция доступна только, когда method является 'force3'.

Пример: размещение (H, 'сила', 'XStart', x, 'YStart', y, 'ZStart', z)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Многоуровневый

свернуть все

Направление уровней, заданных как пара, разделенная запятой, состоящая из 'Direction' и или 'down', 'up', 'left' или 'right'. Для направленных нециклических графиков (DAG) стрелки показывают в обозначенном направлении.

Эта опция доступна только, когда method является 'layered'.

Пример: размещение (H, 'разделенный на уровни', 'Направление')

Узлы, чтобы включать в сначала уровень, заданный как пара, разделенная запятой, состоящая из 'Sources' и одного или нескольких индексов узла или имен узла.

Эта таблица показывает различные способы относиться к одному или нескольким узлам или их числовыми индексами узла или их именами узла.

ФормаЕдинственный узелНесколько узлов
Индекс узла

Скаляр

Пример 1

Вектор

Пример: [1 2 3]

Имя узла

Символьный вектор

Пример: A

Массив ячеек из символьных векторов

Пример: A, B, C

Скаляр строки

Пример: A

StringArray

Пример: A, B, C

Эта опция доступна только, когда method является 'layered'.

Пример: размещение (H, 'разделенный на уровни', 'Источники', [1 3 5])

Узлы, чтобы включать в последний уровень, заданный как пара, разделенная запятой, состоящая из 'Sinks' и одного или нескольких индексов узла или имен узла.

Эта опция доступна только, когда method является 'layered'.

Пример: размещение (H, 'разделенный на уровни', 'Приемники', [2 4 6])

Метод присвоения уровня, заданный как пара, разделенная запятой, состоящая из 'AssignLayers' и одна из опций в этой таблице.

ОпцияОписание
'auto' (значение по умолчанию)Присвоение узла использует или 'asap' или 'alap', какой бы ни более компактно.
'asap'Как можно скорее. Каждый узел присвоен первому возможному уровню, учитывая ограничение, что все его предшественники должны быть в более ранних уровнях.
'alap'Уже в возможном. Каждый узел присвоен последнему уровню, учитывая ограничение, что все его преемники должны быть в более поздних уровнях.

Эта опция доступна только, когда method является 'layered'.

Пример: размещение (H, 'разделенный на уровни', 'AssignLayers', 'alap')

Подпространство

свернуть все

Размерность встроенного подпространства, заданного как пара, разделенная запятой, состоящая из 'Dimension' и положительного скалярного целого числа.

  • Целочисленным значением по умолчанию является min([100, numnodes(G)]).

  • Для размещения 'subspace' целое число должно быть больше, чем или равным 2.

  • Для размещения 'subspace3' целое число должно быть больше, чем или равным 3.

  • В обоих случаях целое число должно быть меньше, чем количество узлов.

Эта опция доступна только, когда method является 'subspace' или 'subspace3'.

Пример: размещение (H, 'подпространство', 'Размерность', d)

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Круг

свернуть все

Центральный узел в круговом размещении, заданном как пара, разделенная запятой, состоящая из 'Center' и одно из значений в этой таблице.

ЗначениеПример
Скалярный индекс узла1
Имя узла вектора символаA
Представьте скалярное имя узла в виде строкиA

Эта опция доступна только, когда method является 'circle'.

Пример: размещение (H, 'круг', 'Центр', 3) помещает узел три в центре.

Пример: размещение (H, 'круг', 'Центр', '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., E. Koutsofios, S. Север и K.-P Vo. “Метод для Рисования Ориентированных графов”. Транзакции IEEE на Разработке программного обеспечения. Vol.19, 1993, стр 214–230.

[3] Барт, W., M. Juenger и П. Муцель. “Простой и Эффективный Перекрестный подсчет Двойного слоя”. Журнал Алгоритмов Графика и Приложений. Vol.8 (2), 2004, стр 179–194.

[4] Brandes, U. и Б. Коепф. “Быстрое и Простое Присвоение Горизонтальной координаты”. LNCS. Издание 2265, 2002, стр 31–44.

[5] И. Корен. “Чертя Графики Собственными векторами: Теория и Практика”. Компьютеры и Математика с Приложениями. Издание 49, 2005, стр 1867–1888.

Введенный в R2015b

Была ли эта тема полезной?