MATLAB Answers

0

How to Draw a Line Between Two Points on Different Axes

Asked by Jacob Smith, PhD on 20 Jul 2018
Latest activity Edited by VIVEK RUHELA on 26 Feb 2019
I have a small plot inlaid on a larger plot. Of course, each plot has its own set of axes. Is there a way to draw a line connecting a point on the first plot with a point on the second plot?

  2 Comments

Hmmm....interesting question! :)
Haven't actually tried to solve that one but it's tied into how the 'position' property of the secondary axes is set compared to the primary and then the difference between the coordinate systems of the canvas and the axes...there's a discussion under the graphics objects section that shows how that's all intertwined...
Good luck, if somebody else doesn't solve it first, I'll try to get back later on after meetings...
Please post a screenshot.

Sign in to comment.

Products


Release

R2018a

1 Answer

Answer by Kelly Kearney
on 20 Jul 2018

I suggest using annotations paired with the very handy axescoord2figurecoord function:
h.ax(1) = axes('position', [0.1 0.1 0.8 0.8]);
h.ax(2) = axes('position', [0.8 0.1 0.1 0.1]);
x = 1:10;
y = x.^2;
plot(h.ax(1), x,y);
plot(h.ax(2), x,y);
set(gcf, 'units', 'normalized');
axes(h.ax(1));
[xfig(1), yfig(1)] = axescoord2figurecoord(x(5), y(5));
axes(h.ax(2));
[xfig(2), yfig(2)] = axescoord2figurecoord(x(5), y(5));
annotation('line', xfig, yfig);

  1 Comment

@Kelly Kearney : This code is not working and I am not able to reproduce the results given by you. The smaller axes is hidden behind the bigger one. How to put it on front. Thanks.

Sign in to comment.