Asked by William Fantin
on 17 May 2019 at 23:24

Hello,

My problem is I have two graphs that draw things out at the same time, but they are on different axes. I want them to run in sync with each other so you can see at the same time. As of now one gets drawn out, then after that is done the other starts plotting its points.

Any help would be appreciated!

Thanks

Answer by Adam Danz
on 18 May 2019 at 16:16

Here's a demo to follow. It creates two axes that display the time course of a sine and cosine wave. Run it, step through it to understand what's going on, and I'd be glad to address any questions.

% Create data for both axes

x = -pi:.05:pi;

y1 = sin(x);

y2 = cos(x);

% Set up figure(s)

% Note: A lot of this section would be more efficiently done by looping through

% both axes instead of having duplicate commands.

figure

s1 = subplot(2,1,1);

s2 = subplot(2,1,2);

ylabel(s1,'sin(x)')

ylabel(s2,'cos(x)')

xlim(s1,[min(x),max(x)]);

xlim(s2,[min(x),max(x)]);

ylim(s1,[min(y1),max(y1)]);

ylim(s2,[min(y2),max(y2)]);

hold(s1,'on');

hold(s2,'on')

grid(s1,'on')

grid(s2,'on')

% Plot empty lines that will be updated within the loop

% Note: In this exmaple I could have used the real x values below but

% I wanted to show how you update them within the loop.

p1 = plot(s1,nan(size(x)),nan(size(y1)),'-o');

p2 = plot(s2,nan(size(x)),nan(size(y2)),'-o');

% Update each iteration

for i = 1:length(x)

% Update values

p1.XData(i) = x(i);

p1.YData(i) = y1(i);

p2.XData(i) = x(i);

p2.YData(i) = y2(i);

% Update axes

drawnow

end

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 3 Comments

## Adam Danz (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/462758-how-to-make-two-plots-happen-at-the-same-time-on-two-different-axes#comment_706385

## William Fantin (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/462758-how-to-make-two-plots-happen-at-the-same-time-on-two-different-axes#comment_706392

## Walter Roberson (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/462758-how-to-make-two-plots-happen-at-the-same-time-on-two-different-axes#comment_706408

Sign in to comment.