Этот пример показывает, как настроить Data Cursor GraphPlot
, чтобы отобразить дополнительные свойства узла графика.
Объект Create GraphPlot
Создайте графический объект GraphPlot
для случайного ориентированного графа. Добавьте дополнительное свойство wifi
узла в график.
rng default
G = digraph(sprandn(20, 20, 0.05));
G.Nodes.wifi = randi([0 1], 20, 1) == 1;
h = plot(G);
Включите режим Data Cursor путем выбора элемента Data Cursor в меню Tools.
С включенным режимом Data Cursor кликните по узлу в графике, чтобы поднять отображение курсора. Data Cursor позволяет вам выбирать узлы в графике графика и свойствах представления узлов. По умолчанию Data Cursor для неориентированного графа отображает номер идентификатора узла и степень. Для ориентированных графов отображение включает номер идентификатора узла, в степени, и-степень.
Чтобы отобразить дополнительные свойства узла, такие как wifi
, функция обратного вызова Data Cursor должна быть изменена. Для получения общей информации об использовании и Data Cursor настройки, смотрите, В интерактивном режиме Исследуют Отображенные на графике Данные.
Настройте текст, отображенный по условию курсор путем записи новой функции обратного вызова Data Cursor.
1. Сохраните функциональный GraphCursorCallback.m
в своем текущем каталоге:
function output_txt = GraphCursorCallback(obj,event_obj,NodeProperties) % Display the position of the data cursor % obj Currently not used (empty) % event_obj Handle to event object % output_txt Data cursor text (character vector or cell array of character vectors). h = get(event_obj,'Target'); pos = get(event_obj,'Position'); ind = find(h.XData == pos(1) & h.YData == pos(2), 1); output_txt = {['Node ' num2str(ind)], ... ['Wifi: ' num2str(NodeProperties.wifi(ind))]};
Стандартная функция обратного вызова Data Cursor принимает два входных параметра. GraphCursorCallback
принимает дополнительный входной параметр, NodeProperties
, так, чтобы Data Cursor получил доступ к дополнительным свойствам узла в графике, таким как wifi
.
2. Соедините функцию GraphCursorCallback
с Data Cursor путем изменения свойства UpdateFcn
менеджера по Data Cursor объект. Эта команда использует анонимную функцию, чтобы передать таблицу G.Nodes
как третий вход к GraphCursorCallback
. Этот метод только берет снимок состояния таблицы G.Nodes
, поэтому если свойства графика впоследствии изменяются, то необходимо изменить свойство UpdateFcn
снова.
hdt = datacursormode; hdt.UpdateFcn = @(obj,event_obj) GraphCursorCallback(obj,event_obj,G.Nodes);
3. Теперь, когда GraphCursorCallback
соединяется с Data Cursor, удалите любые старые всплывающие подсказки в графике, затем повторно включите режим Data Cursor и выберите узел. Новое отображение Data Cursor включает свойство узла wifi
, как задано в GraphCursorCallback
.
datacursormode
| digraph
| graph