是否可以在MATLAB中跨多个数字同步数据游标?

时间:2017-05-01 14:45:26

标签: matlab matlab-figure

是否可以在特定位置的给定图形上创建数据光标,然后将其他图形中的其他光标链接到它? (不是子图)

目标是当我手动移动其中一个游标的位置时,其他每个游标中的所有其他数据游标都会移动到与其平行的相同位置(假设所有数字大小相同)。

1 个答案:

答案 0 :(得分:8)

可以使用undocumented MATLAB functions。诀窍是捕获数据提示何时更改并相应地更新其他数据。

具有两个链接图的概念证明如下所示:

% first plot
f1 = figure;
p1 = plot(1:10);
datacursormode on; % enable datatip mode
c1 = datacursormode(f1); % get the cursor mode
d1 = c1.createDatatip(p1); % create a new datatip

% second plot
f2 = figure;
p2 = plot(1:10);
datacursormode on;
c2 = datacursormode(f2);
d2 = c2.createDatatip(p2);

% register the function to execute when the datatip changes.    
set(d1,'UpdateFcn',@(cursorMode,eventData) onDataTipUpdate(cursorMode,eventData, d2))
set(d2,'UpdateFcn',@(cursorMode,eventData) onDataTipUpdate(cursorMode,eventData, d1))

% callback function when the datatip changes
function displayText = onDataTipUpdate(cursorMode,eventData, d)
   pos = get(eventData,'Position'); % the new position of the datatip
   displayText = {['X: ',num2str(pos(1))], ...
                      ['Y: ',num2str(pos(2))]}; % construct the datatip text
   d.Position(1) = pos(1); % update the location of the other datatip.
end