如何避免在旧版本的 Matlab 中裁剪图形
How to avoid figure cropping in older versions of Matlab
在回答问题时 and learning from the answer 又出现了一个问题。
如何保护即将超出限制的调整大小的图形?
假设我们使用屏幕分辨率为 1400 x 900 px 和分辨率为 96 ppi 的 matlab 2011b,并且我们要导出尺寸为 10" x 20" 的图形,这肯定超出了限制。
FigureSize=[10 20];
FigureInchSize=FigureSize.*1; %\ Convert the given size to inches
ScrSize=get(0,'ScreenSize');
ScrSize=ScrSize(3:4);
PPI_def=get(0,'ScreenPixelsPerInch');
PPI_new=PPI_def;
%\ Calculate the appropriate resolution PPI_new
if FigureSize(1)*PPI_new>ScrSize(1) %\ Will the figure width exceed the limit?
PPI_new=floor(ScrSize(1)/FigureInchSize(1));
end
if FigureSize(2)*PPI_new>ScrSize(2) % Will the figure height exceed (new) limit?
PPI_new=floor(ScrSize(2)/FigureInchSize(2));
end
set(0,'ScreenPixelsPerInch',PPI_new);
set(FigureHandle,'position',[0.1,0.1,FigureSize]);
%\ Export the figure
export_fig('Foo','-pdf','-nocrop');
%\ Reset the resolution
set(0,'ScreenPixelPerInch',PPI_def);
在第一部分中,我们读取了必要的值并将它们转换为合适的格式。我们还避免通过 set(Handle,'Units',<Units>)
自动转换,这可能会干扰 Position
值的解释。
在第二部分中,我们会根据需要更改分辨率值。
在第三部分中,我们更改分辨率、调整大小并导出图形,return将分辨率恢复为默认值。
请注意何时和如何定义图的布局。
在回答问题时
如何保护即将超出限制的调整大小的图形?
假设我们使用屏幕分辨率为 1400 x 900 px 和分辨率为 96 ppi 的 matlab 2011b,并且我们要导出尺寸为 10" x 20" 的图形,这肯定超出了限制。
FigureSize=[10 20];
FigureInchSize=FigureSize.*1; %\ Convert the given size to inches
ScrSize=get(0,'ScreenSize');
ScrSize=ScrSize(3:4);
PPI_def=get(0,'ScreenPixelsPerInch');
PPI_new=PPI_def;
%\ Calculate the appropriate resolution PPI_new
if FigureSize(1)*PPI_new>ScrSize(1) %\ Will the figure width exceed the limit?
PPI_new=floor(ScrSize(1)/FigureInchSize(1));
end
if FigureSize(2)*PPI_new>ScrSize(2) % Will the figure height exceed (new) limit?
PPI_new=floor(ScrSize(2)/FigureInchSize(2));
end
set(0,'ScreenPixelsPerInch',PPI_new);
set(FigureHandle,'position',[0.1,0.1,FigureSize]);
%\ Export the figure
export_fig('Foo','-pdf','-nocrop');
%\ Reset the resolution
set(0,'ScreenPixelPerInch',PPI_def);
在第一部分中,我们读取了必要的值并将它们转换为合适的格式。我们还避免通过 set(Handle,'Units',<Units>)
自动转换,这可能会干扰 Position
值的解释。
在第二部分中,我们会根据需要更改分辨率值。
在第三部分中,我们更改分辨率、调整大小并导出图形,return将分辨率恢复为默认值。
请注意何时和如何定义图的布局。