How to plot several curves in MATLAB using handles

user1677716 picture user1677716 · Oct 25, 2012 · Viewed 12k times · Source

I am plotting data in MATLAB in real time. I want to use a handle. My problem is I do not know how to plot more than one Y-Data Curve.

I found the following code It shows how to plot one set of YData. Has anybody got an idea to transform the code into two or more Y-Datasets, e.g. sind(x) as an additional curve in the plot?

x = 1:1000;
y = cosd(x);

xi = x(1);
yi = y(1);
h = plot(xi, yi, 'YDataSource', 'yi', 'XDataSource', 'xi');

for k = 2:1000...
xi = x(1:k);
yi = y(1:k);
refreshdata(h, 'caller');
drawnow;
end;

Answer

Andrey Rubshtein picture Andrey Rubshtein · Oct 25, 2012

First of all, never use refreshdata. Use the direct set method instead.

        set(h,'Xdata',xi,'YData',yi);

Secondly, you should do two plots

      h1 = plot(xi, yi);
      h2 = plot(xi, yi);

And update each one accordingly.