Replot a matlab.graphics.chart
조회 수: 9 (최근 30일)
이전 댓글 표시
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
댓글 수: 7
José-Luis
2017년 9월 6일
When you say generate one plot and store it in a data array, how do you do that?
Please show some example code.
채택된 답변
Guillaume
2017년 9월 6일
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
추가 답변 (2개)
KL
2017년 9월 6일
편집: KL
2017년 9월 6일
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
댓글 수: 2
Birch
2017년 9월 6일
Hi KL, thanks for your answer. The thing is that I have a loop with 60 cycles, generating one plot per cycle. I want to be able to call each specific plot afterwards. Is it possible to set a handle on each plot?
José-Luis
2017년 9월 6일
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';
댓글 수: 3
참고 항목
카테고리
Help Center 및 File Exchange에서 Graphics Object Programming에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!