将图窗大小分配给具有给定句柄的图窗 (MATLAB)
有没有办法将图形的外位置属性分配给具有给定句柄的图形?
例如,如果我想将一个图形定义为图 1,我将使用:
figure(1)
imagesc(Arrayname) % I.e. any array
我还可以使用以下代码更改图形的属性:
figure('Name', 'Name of figure','NumberTitle','off','OuterPosition',[scrsz(1) scrsz(2) 700 700]);
是否有一个属性名称,我可以使用它来将外部位置属性分配给指定为图形的图形1?
我问这个问题的原因是因为我正在使用一个名为 save2word (来自 MATLAB 文件交换)的命令来将我制作的函数中的一些绘图保存到 Word 文件中,并且我想限制我打开的图形数量它就是这样做的。
我剩下的代码是:
plottedloops = [1, 5:5:100]; % Specifies which loops I want to save
GetGeometry = getappdata(0, 'GeometryAtEachLoop') % Obtains a 4D array containing geometry information at each loop
NumSections = size(GetGeometry,4); %Defined by the fourth dimension of the 4D array
for j = 1:NumSections
for i = 1:plottedloops
P = GetGeometry(:,:,i,j);
TitleSize = 14;
Fsize = 8;
% Save Geometry
scrsz = get(0,'ScreenSize'); %left, bottom, width height
figure('Name', 'Geometry at each loop','NumberTitle','off','OuterPosition',[scrsz(1) scrsz(2) 700 700]); This specifies the figure name, dims etc., but also means multiple figures are opened as the command runs.
% I have tried this, but it doesn't work:
% figure(0, 'OuterPosition',[scrsz(1) scrsz(2) 700 700]);
imagesc(P), title('Geometry','FontSize', TitleSize), axis([0 100 0 100]);
text(20,110,['Loop:',num2str(i)], 'FontSize', TitleSize); % Show loop in figure
text(70,110,['Section:',num2str(j)], 'FontSize', TitleSize);% Show Section number in figure
save2word('Geometry at each loop'); % Saves figure to a word file
end
结束
谢谢
is there a way to assign the outerposition property of a figure to a figure with a given handle?
For example, if I wanted to define a figure as say figure 1, I would use:
figure(1)
imagesc(Arrayname) % I.e. any array
I can also change the properties of a figure using the code:
figure('Name', 'Name of figure','NumberTitle','off','OuterPosition',[scrsz(1) scrsz(2) 700 700]);
Is there a propertyname I can use to assign the outerposition property to the figure assigned as figure 1?
The reason I am asking this is because I am using a command called save2word (from the MATLAB file exchange) to save some plots from a function I have made to a word file, and I want to limit the number of figures I have open as it does this.
The rest of the code I have is:
plottedloops = [1, 5:5:100]; % Specifies which loops I want to save
GetGeometry = getappdata(0, 'GeometryAtEachLoop') % Obtains a 4D array containing geometry information at each loop
NumSections = size(GetGeometry,4); %Defined by the fourth dimension of the 4D array
for j = 1:NumSections
for i = 1:plottedloops
P = GetGeometry(:,:,i,j);
TitleSize = 14;
Fsize = 8;
% Save Geometry
scrsz = get(0,'ScreenSize'); %left, bottom, width height
figure('Name', 'Geometry at each loop','NumberTitle','off','OuterPosition',[scrsz(1) scrsz(2) 700 700]); This specifies the figure name, dims etc., but also means multiple figures are opened as the command runs.
% I have tried this, but it doesn't work:
% figure(0, 'OuterPosition',[scrsz(1) scrsz(2) 700 700]);
imagesc(P), title('Geometry','FontSize', TitleSize), axis([0 100 0 100]);
text(20,110,['Loop:',num2str(i)], 'FontSize', TitleSize); % Show loop in figure
text(70,110,['Section:',num2str(j)], 'FontSize', TitleSize);% Show Section number in figure
save2word('Geometry at each loop'); % Saves figure to a word file
end
end
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您在创建图形时捕获图形句柄,
则可以随时分配属性。
您还可以将图形句柄收集到向量内,然后一次设置所有大小。
如果由于某种原因无法捕获图窗句柄,可以使用
findall
查找具有特定名称的图窗,或使用gcf
获取当前(最后一个)图窗的句柄。选择/打开)图。If you capture the figure handle when you create the figure
You can assign properties any time you want
You can also gather the figure handles inside a vector, and then set all sizes at once.
If you cannot capture the figure handle for some reason, you can use
findall
to look for a figure with a specific name, orgcf
to get the handle of the current (last selected/opened) figure.以下是一些建议/更正:
您的第二个 for 循环应如下所示:
这是因为
plottedloops
已经 是一个数组,并且您希望i
每次遍历时都采用数组中的每个顺序值循环。例如,for 循环的常见形式是:其中术语
1:someScalarValue
为您创建一个数组。看起来您想在图形窗口中绘制某些内容,然后使用
save2word
保存它,然后绘制其他内容,然后保存它,等等。因此,我建议创建您的图形窗口 < em>在 for 循环之外,并简单地在循环内重新绘制窗口内容。如果将这两行移到循环之外:那么您一次应该只打开一个图形。
Here are a few suggestions/corrections:
Your second for loop should look like this:
This is because
plottedloops
is already an array, and you wanti
to take on each sequential value in the array for each pass through the loop. For example, a common form for a for loop is:Where the term
1:someScalarValue
creates an array for you.It looks like you are wanting to plot something in a figure window, then save it with
save2word
, then plot something else, then save that, etc. Therefore, I suggest creating your figure window outside your for loops, and simply replotting the window contents within the loop. If you move these two lines outside your loops:Then you should only have one figure at a time open.