Asked by JB
on 6 Sep 2017

I have a simple issue that I could use some help with. I am preparing a loop where each cycle saves a plot in a matlab.graphics.chart. A simple code example:

x=[2 4 6 8];

y=[10 20 30 40];

plot1=plot(x,y);

How do I re-plot "plot1"? Thanks

Answer by Guillaume
on 6 Sep 2017

Accepted Answer

JB, looking at the various comments in this question, I've got the feeling that you're not totally understand what it is that the plot function returns.

The plot function returns a handle to a line object (which you store in your plotdata variable in one of your comment). Now one of two things can happen:

- that line object still exists in the figure: In that case, you can toggle its visibility, change its properties (colour, line style, etc.) or do all sorts of things with it, but in any case, it is still part of whichever figure you created it in.
- that line object no longer exists, for example the figure has been closed or the plot was deleted because you plotted on the same figure without hold on. In that case, the handle that you've stored in your variable is no longer valid. It does not contain any information about the original plot. It's completely useless and there is no way to retrieve the original plot.

This is why your question is confusing. Either the plot still exists (it may be hidden), in which case there's nothing to do to replot (except maybe unhide the plot), or the plot no longer exists in which case what you've stored is now useless and you'll have to call the plot function to replot

Answer by KL
on 6 Sep 2017

Edited by KL
on 6 Sep 2017

plot1 is the axis handle. "re-plotting" means plotting on the same figure window with the new data.

for iCount = 1:5

x = iCount*[2 4 6 8];

y = iCount*[10 20 30 40];

h1 = figure(1); %h1 is figure handle

plot1=plot(x,y); %plot1 is axis handle

end

Birch
on 6 Sep 2017

JB
on 6 Sep 2017

Here is an example for three plots:

x=[2 4 6 8; 3 6 9 12; 0 -2 -4 -6];

y=[10 20 30 40; 10 20 30 40; 10 20 30 40];

for K = 1 : 3

hold on

Plot=plot(x(K,:),y(K,:));

plotdata{K,1}=Plot;

end

From this I want to be able to call one of the plots from the plotdata array and re-plot it. In my original array I have 60 different plots. Is it possible?

Sign in to comment.

Answer by José-Luis
on 6 Sep 2017

Not sure this is what you mean:

numPlots = 10;

lH = cell(1,numPlots);

for ii = 1:numPlots

hold on;

lH{ii} = plot(rand(10,1));

lH{ii}.Visible = 'off';

end

lH{2}.Visible = 'on';

JB
on 6 Sep 2017

José-Luis
on 6 Sep 2017

As long as you have not destroyed the axes or figure, probably.

IMO it might be better to store the data and plot when needed.

I am not entirely sure I understand what you are trying to do.

JB
on 6 Sep 2017

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 7 Comments

## KSSV (view profile)

## Direct link to this comment

https://fr.mathworks.com/matlabcentral/answers/355386-replot-a-matlab-graphics-chart#comment_482218

## JB (view profile)

## Direct link to this comment

https://fr.mathworks.com/matlabcentral/answers/355386-replot-a-matlab-graphics-chart#comment_482240

## José-Luis (view profile)

## Direct link to this comment

https://fr.mathworks.com/matlabcentral/answers/355386-replot-a-matlab-graphics-chart#comment_482245

## JB (view profile)

## Direct link to this comment

https://fr.mathworks.com/matlabcentral/answers/355386-replot-a-matlab-graphics-chart#comment_482248

## JB (view profile)

## Direct link to this comment

https://fr.mathworks.com/matlabcentral/answers/355386-replot-a-matlab-graphics-chart#comment_482249

## José-Luis (view profile)

## Direct link to this comment

https://fr.mathworks.com/matlabcentral/answers/355386-replot-a-matlab-graphics-chart#comment_482250

## JB (view profile)

## Direct link to this comment

https://fr.mathworks.com/matlabcentral/answers/355386-replot-a-matlab-graphics-chart#comment_482255

Sign in to comment.