В Matlab 2011b у меня есть многомерная матрица, которая должна быть изначально представлена как 2D-график из двух его размеров. Я хочу, чтобы маркеры можно было щелкнуть левой кнопкой мыши. Нажатие на маркер рисует новую фигуру других размеров, нарезанных щелчком.Сделать щелчок MATLAB графиков участков график подграф
Этот вопрос связан с Matlab: Plot points and make them clickable to display informations about it, но я хочу запустить скрипт, а не просто всплывать данные о точке клика.
Googling намекнул, что ButtonDownFcn
может быть использован, но примеры, которые я нашел требует ручного черчения каждой точки и прикрепления обработчика, например, так:
hp = plot(x(1), y(1), 'o');
set(hp, 'buttondownfcn', 'disp(1)');
Поскольку существует множество маркеров в главном графике, можно ли просто прикрепите обработчик ко всей кривой и вызовите функцию построения подграфа с индексом (предпочтительнее) или координатами щелчка маркера?
Спасибо. Хотя ваш пример показывает, как я могу получить 2D-фрагмент трехмерных данных, меня больше интересует получение индекса маркера 2D-графика, на который я нажимаю. Например, изменяя свой код ниже, щелчок любого маркера печатает те же XData и YData. Я бы хотел, чтобы вместо этого щелкнул указатель (1, 2, 3 и т. Д.). функция main данные = пики; h = plot (1: размер (данные, 2), данные (1, :), 'o-'); множества (Л, 'buttondownfcn', @hitme) конец функция hitme (gcbo, evendata) прибудут (gcbo, 'XData') прибудет (gcbo, 'YData') конца – Gnubie
если все, что вы хотите это point, добавьте 'pt = get (gca, 'CurrentPoint');', как показано выше. Это даст вам трехмерную точку, поэтому в зависимости от ваших потребностей просто используйте первую строку. – Rasman
Большое спасибо! Это дает мне координаты, а не индекс маркера, но поскольку я знаю исходную матрицу, я могу вычислить индекс из x-координаты, например. раунд (pt (1)). – Gnubie