Добавление свойства узла в Data Cursor графика

Этот пример показывает, как настроить 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 путем выбора элемента Data Cursor в меню Tools.

С включенным режимом Data Cursor кликните по узлу в графике, чтобы поднять отображение курсора. Data Cursor позволяет вам выбирать узлы в графике графика и свойствах представления узлов. По умолчанию Data Cursor для неориентированного графа отображает номер идентификатора узла и градус. Для ориентированных графов отображение включает номер идентификатора узла, в градусе, и-градус.

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

Смотрите также

| |

Похожие темы

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