link x-axis from one figure with y-axis from another figure

40 次查看(过去 30 天)
Dear reader,
I am looking for a matlab code that can link the x-axis from figure1 with the y-axis from figure2. I need this functionality in order to simplify the visual inspection of 2 figures. Any help is highly appreciated.
For example, this code links the x-axis of both figures:
x=1:5;
figure;
plot(x);
a1 = gca;
figure;
p2 = plot(x+1);
a2 = gca;
linkaxes([a1 a2],'x');
Notice that now, as the user pans/zooms on figure1, there will be an immediate consequence on figure2. How can I modify this code such that it links x-axis from figure1 to y-axis of figure2?
Thank you,

采纳的回答

Giorgos Papakonstantinou
You could create a callback and then add a listener. So a minimal example would be:
CallBack:
function test(src, evt, ax)
set(ax, 'Ylim', get(gca, 'Xlim'))
end
Your figure:
x=1:5;
figure;
a1 = subplot(1,2,1);
plot(x);
a2 = subplot(1,2,2);
p2 = plot(x+1);
drawnow
xLimListener = addlistener( a1, 'XLim', 'PostSet', @(src,evt) test(src, evt, a2));
This example is on one figure. However, you can do the same with two figures.

更多回答(1 个)

Titus Edelhofer
Titus Edelhofer 2015-2-19
Hi,
using linkaxes (or the more general linkprop) this will not work, because only the same property can be linked. What should work is to use a zoom object:
x=1:5;
figure;
plot(x);
a1 = gca;
figure;
p2 = plot(x+1);
a2 = gca;
h = zoom(1);
h.ActionPostCallback = @(hFig, hAx) set(a2, 'ylim', get(a1, 'xlim'));
And vice versa for figure 2 ...
Titus

类别

Help CenterFile Exchange 中查找有关 Graphics Object Properties 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by