Can figure numbers be re-assigned?
50 次查看(过去 30 天)
显示 更早的评论
Is it possible to re-assign a figure number , for example if I have a Figure 55 open, can I make it Figure 2 as long as I don't already have a Figure 2 open? If so how do I do this?
I have a routine that generates 60+ figures, and I delete all but 3 interesting ones. I would like to make them Figures 1,2,3 because I need to re-run the routine and generate another set of figures, and I'd like the first set to appear together in the figure order (it makes them easier to keep track of).
1 个评论
采纳的回答
José-Luis
2014-6-9
编辑:José-Luis
2014-6-9
To get a list of all the existing figures:
get(0,'Children');
If figure two does not exist and you want to copy figure(55):
figure(2)
copyobj(allchild(55),2);
Get rid of figure(55):
clf(55);
And to answer your question directly. I believe once a figure number is set, you have to live with it. But there are workarounds, such as the one above.
更多回答(2 个)
Joseph Cheng
2014-6-9
编辑:Joseph Cheng
2014-6-9
This maybe a bit hard to implemented based on how you're selecting the 3 interesting ones but the function copyobj() will do the trick.
x = randi(10,1,5);
h1 = figure(1),plot(x);
figure(100);
h2 = gcf;
copyobj(allchild(h1),h2);
Here i create a random plot in figure 1. and then using gcf i get figure 100 and copy figure 1 to figure 100.
0 个评论
Matt J
2024-2-13
编辑:Matt J
2024-2-13
The only reliable way that I have found, one which avoids copyobj and keeps all the figure formatting, is to save all open figures to a temporary .fig file and then reload i. The reloaded figures will always be numbered sequentially starting at the first available fig number.
H=findobj(groot,'Type','figure'); %Get all open figures
tn=tempname('.')+".fig"; %generate temporary name
savefig(H,tn)
close all
openfig(tn); delete(tn);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!