Добавление дополнительной информации к точкам данных на графике

НИЖЕ ЕСТЬ РЕШЕНИЕ!

введите здесь описание изображения

Это значение (x, y) фактически соответствует значению t, которое я хочу видеть на графике. Что я могу сделать?

Очевидно, что Matlab имеет возможность отображать несколько данных в поле данных:

enter image description here just call it as "TimePlot(x,y,t)" and it will work. This code, I believe, also illustrates a few key points in modifying datatips.

function  TimePlot( varargin )
x=varargin{1};
y=varargin{2};
t=varargin{nargin};
fh=figure;
plot(varargin{1:nargin-1})

function output_txt = myfunction(obj,event_obj)
% Display the position of the data cursor
% obj          Currently not used (empty)
% event_obj    Handle to event object
% output_txt   Data cursor text string (string or cell array of strings).




pos = get(event_obj,'Position');

ind=intersect(Find(x,pos(1),1e-10),Find(y,pos(2),1e-10));
if(length(ind)~=1)
    text='err';
else
    text=num2str(t(ind),4);
end

output_txt = {['X: ',num2str(pos(1),4)],...
    ['Y: ',num2str(pos(2),4)],['T: ',text]};

% If there is a Z-coordinate in the position, display it as well
if (length(pos) > 2)
    output_txt{end+1} = ['Z: ',num2str(pos(3),4)];
end

end

dcm=datacursormode(fh);
datacursormode on
set(dcm,'updatefcn',@myfunction)



end

function [ out ] = Find( vector, value ,precision)

if nargin < 3
    precision =   0.0001;
end

out=[];

for i=1:length(vector)
    
    if(abs(vector(i)-value)<precision)
        out=[out i];
    end

end

end


person grdgfgr    schedule 26.05.2015    source источник
comment
Пожалуйста, уточните, как вы хотите этого добиться. Если у вас есть более конкретный вопрос о кодировании, отредактируйте свой вопрос. В противном случае это не по теме StackOverflow (вместо этого вы можете получить помощь по SuperUser)   -  person ryanyuyu    schedule 26.05.2015
comment
Вот учебник о том, как это сделать.   -  person thewaywewalk    schedule 26.05.2015
comment
или повторите этот дублирующий вопрос Настройка всплывающей подсказки на рисунке Matlab   -  person thewaywewalk    schedule 26.05.2015


Ответы (2)


В MATLAB Central вы можете найти подробное видеоруководство по созданию пользовательских советов по данным: Учебное пособие: Как создать пользовательскую подсказку по данным в MATLAB.

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

В документации о режиме datacursormode вы найдите еще несколько примеров (следующие все скопированы из документа):

Этот пример включает режим курсора данных на текущей фигуре и устанавливает параметры режима курсора данных. Следующие утверждения

  • Создать график
  • Включить режим курсора данных
  • Получите объект режима курсора данных, укажите параметры всплывающей подсказки и получите дескриптор строки, которую занимает всплывающая подсказка:
fig = figure;
z = peaks;
plot(z(:,30:35))
dcm_obj = datacursormode(fig);
set(dcm_obj,'DisplayStyle','datatip',...
    'SnapToDataVertex','off','Enable','on')

disp('Click line to display a data tip, then press Return.')
% Wait while the user does this.
pause 

c_info = getCursorInfo(dcm_obj);
% Make selected line wider
set(c_info.Target,'LineWidth',2)

введите здесь описание изображения

В этом примере показано, как настроить текст, отображаемый курсором данных. Например, вы можете заменить текст, отображаемый во всплывающей подсказке и окне данных (x: и y:), на Time: и Amplitude:, создав простую функцию обновления.

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

Сохраните этот код как doc_datacursormode.m:

function doc_datacursormode % Plots graph and sets up a custom data tip update function 
fig = figure; 
a = -16; 
t = 0:60; 
plot(t,sin(a*t)) 
dcm_obj = datacursormode(fig); 
set(dcm_obj,'UpdateFcn',@myupdatefcn)

Сохраните следующий код как myupdatefcn.m на пути MATLAB:

function txt = myupdatefcn(empt,event_obj) % Customizes text of data tips

pos = get(event_obj,'Position'); txt = {['Time: ',num2str(pos(1))],...
          ['Amplitude: ',num2str(pos(2))]};

Чтобы настроить и использовать функцию обновления, введите:

doc_datacursormode

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

введите здесь описание изображения

person thewaywewalk    schedule 26.05.2015

Я не думаю, что вы можете увидеть значение третьего измерения в двухмерном сюжете. Можете ли вы попробовать выполнить серфинг (x, y, t) или plot3 (x, y, t), чтобы получить трехмерный график и с правильной ориентацией вы можете получить требуемый график и все необходимые значения x, y и t.

person Shantanu Deshpande    schedule 26.05.2015