Matlab: нанесите точки и сделайте их кликабельными для отображения информации о них - PullRequest
4 голосов
/ 09 декабря 2011

У меня есть несколько точек, подобных этому:

matrix = rand(6, 4)
0.8147    0.2785    0.9572    0.7922
0.9058    0.5469    0.4854    0.9595
0.1270    0.9575    0.8003    0.6557
0.9134    0.9649    0.1419    0.0357
0.6324    0.1576    0.4218    0.8491
0.0975    0.9706    0.9157    0.9340

первые два столбца - это значения x и y, которые отображаются в виде точек через

plot(matrix(:, 1), matrix(:, 2), '*r'

Сейчася хочу выработать следующее: всякий раз, когда я нажимаю на определенную точку на графике, я хочу, чтобы информация из столбцов 3 и 4 отображалась в виде текста справа от точки в окне, например, с некоторым текстом, напримерinformation 1: VALUE_COL3, information 2: VALUE_COL4.Как этого добиться?Я подумал об атрибуте ButtonDownFcn, а затем проверил точку щелчка и сопоставил ее.Но есть ли более простой способ сделать это?

Спасибо!

Ответы [ 2 ]

8 голосов
/ 09 декабря 2011

Хотя метод Сэма, вероятно, является здесь правильным решением, я бы хотел предложить другое (хотя это скорее «взлом», чем правильное решение).

Вы можете прикрепить контекстные меню для обработки графических объектов. Эти меню могут отображать несколько вариантов выбора и даже позволять вашему сценарию реагировать на выбор пользователя. Взгляните на следующий пример:

x = [1:10];
y = x.^2;

plot(x,y); hold on;
h = plot(x(5), y(5),'ro'); %% save the handle to the point we want to annotate

hcmenu = uicontextmenu;
item1 = uimenu(hcmenu, 'Label', 'info 1');
item2 = uimenu(hcmenu, 'Label', 'info 2');
item3 = uimenu(hcmenu, 'Label', 'info 2');

set(h, 'uicontextmenu', hcmenu);

Когда вы вправо нажимаете на точку 'o', вы получаете контекстное меню:

Produces this...

Дополнительную информацию можно найти на сайте Mathwork .

6 голосов
/ 09 декабря 2011

Данные MATLAB имеют функцию, называемую курсоры данных . На панели инструментов есть кнопка, которая выглядит как синяя кривая с перекрестием над ней и небольшой подсказкой. Если вы щелкнете по этому пункту и выберете одну из точек, которые вы построили, у вас появится небольшая подсказка над точкой, дающая некоторую информацию об этой точке. Вы можете дважды щелкнуть по всплывающей подсказке, чтобы поднять ее, и перетянуть ее к другим точкам на графике.

По умолчанию подсказка отображает простую информацию о точках, а именно их координаты X и Y. Но вы можете настроить отображаемый текст по своему усмотрению, получив указатель на объект datacursormode фигуры, используемой для построения, и установив его UpdateFcn. Обратный вызов UpdateFcn выполняется для определения текста, отображаемого во всплывающей подсказке - в вашем случае он может получить соответствующие значения из третьего и четвертого столбцов вашей матрицы, склеить их вместе со строкой «информация» и вернуть ее для отображения .

См. этот пример в документации, чтобы увидеть, как это можно сделать более подробно.

...