Filter löschen
Filter löschen

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

40 Ansichten (letzte 30 Tage)
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,

Akzeptierte Antwort

Giorgos Papakonstantinou
Giorgos Papakonstantinou am 19 Feb. 2015
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.

Weitere Antworten (1)

Titus Edelhofer
Titus Edelhofer am 19 Feb. 2015
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

Kategorien

Mehr zu Graphics Object Properties finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by