2014-01-21 3 views
0

Я создал 2D-матрицу 180X360. Фактически, это сетка LatXLong 1 ° X1 °. Каждая точка сетки имеет значение, рассчитанное в соответствии с моим алгоритмом.Доступные для использования/Интерактивные контурные графики в Matlab

Если я хочу построить эту сетку LatXLong, используя любую функцию контура, это легко сделать.

Теперь, мне нужно сделать, чтобы эта сетка была кликабельным/интерактивным контурным сюжетом таким образом, что, когда пользователь щелкает в любом месте на моей сетке, он получает экранную информацию или дополнительный график, который будет отображаться специально связанным к этой точке сетки.

Короче говоря, я хочу составить график сетки/контура, в котором все точки сетки являются гиперссылками и связаны с дополнительной исходной информацией.

+0

Что вы пробовали? проверьте аналогичные вопросы, например, что-то вроде этого http://stackoverflow.com/questions/14684577/matlab-how-to-get-mouse-click-coordinates или этот http://stackoverflow.com/questions/11233180/retrieving -x-and-y-values-from-matlab-plot – NKN

+0

Спасибо NKN.Я действительно интересуюсь второй ссылкой, которую вы упомянули. Не могли бы вы рассказать мне, как получить координаты как переменные, но не как writtne в названии фигуры или обоих одновременно. – Mushi

ответ

0

Для начала ознакомьтесь с ginput и text. ginput позволит вам щелкнуть точки в вашем сюжете и вернуть координаты в какую-то функцию, которая может генерировать информацию, отображаемую на текущем графике, используя текст, открывая другую фигуру.

Вы можете использовать ginput в цикле для отображения нескольких точек данных, как вы идете:

for t = 1:10 
    [x,y] = ginput(1); 
    text(x,y,'some info'); 
end 

Я не знаю способа, чтобы удалить ГИРД линии. Решение NKN может сделать это для вас.

+0

Спасибо Молли. Вы отвечаете очень полезно. Но есть пара вещей, которые я искал, которых я не получаю от «ginput». (1) Я хотел бы отображать координаты сразу после ввода пользователя (один вход) в течение неограниченного времени. В текущей реализации ginput несколько пользовательских входов сохраняются в матрице с двумя столбцами, а затем пользователь должен нажать enter, чтобы впоследствии получить значения переменных. Кроме того, нажатие enter завершает функцию, которая нежелательна. (2) Когда мышь перемещается по фигуре, есть две линии сетки, движущиеся с помощью курсора, могу ли я их удалить? – Mushi

+0

Я отредактировал свой ответ. – Molly

1

проверка this Ответ: , если вы не хотите иметь переменную в качестве названия сюжета, вы можете изменить код, как:

function mouseExample() 
    h = plot(rand(10,1), 'o-'); 
    set(h, 'ButtonDownFcn',@buttonDownCallback) 

    function out = buttonDownCallback(o,e) 
     p = get(gca,'CurrentPoint'); 
     out = p(1,1:2); 
     % title(sprintf('(%g,%g)',p)) % --> no need this line anymore 
    end 
end 

сохраняется информация, содержащаяся в переменной P, что вы можете используйте позже.

+0

Спасибо NKN еще раз. Я пробовал вышеуказанный код, но я не получаю никакой переменной «p» в своем рабочем пространстве. На самом деле, я использую mouseExample как функцию в другом коде, и я хочу, чтобы переменная 'p' выходила из mouseExample при каждом нажатии. Прошу прощения, если я не получу вашу точку зрения, поскольку я не эксперт в Matlab. Пожалуйста помоги. – Mushi

+0

Тогда вам понадобится ваш mouseExample возвращает переменную. сделайте то же, что я сделал в функции buttonDownCallback. – NKN

Смежные вопросы