首页 > 编程知识 正文

matlab设置figure图像大小,matlab怎么编写一个脚本文件

时间:2023-05-04 11:07:52 阅读:18147 作者:501

脚本用途用于绘制一条函数曲线后,基本上设定函数图像的大小、坐标轴的大小、线条的大小和颜色等。 由于每个图的用途不同,所以所需的功能可能不同。 可以使用类似的方法在matlab帮助文档中找到并调用figure和axes属性。

论文常用的情节大小,建议大家先看看神勇项链的情节经验。

将axes填充到图形中的方法是,实际上从matlab输出的图形大小是指figure.Position。

在此,需要理解figure及axes的属性Posiiton、OuterPosition、InnerPosition。 具体来说,您可以看到matlab的官方文档,但实际效果似乎与此略有不同。

fig.Positon:可绘制区域的位置和大小。 指定为左底部宽度高度格式的向量。 此区域不包括图框、标题栏、菜单栏或工具栏。

fig.OuterPositon:在外部边界的位置和大小上指定“左底部宽度高度”格式的向量。 此属性定义由窗口外部边界包围的区域,如边框、标题栏、菜单栏和工具栏。

fig.InnerPositon:可绘制区域的位置和大小。 指定为“左底部宽度高度”格式的向量。 此区域不包括图框、标题栏、菜单栏或工具栏。 所有测量使用在Units属性中指定的单位。 此属性值与Position属性值相同。

ax.Position:坐标区域的大小和位置。 包括标签和边距,被指定为“左底部宽度高度”格式的四元素向量。 此向量定义由坐标区域外部边界包围的矩形范围。 left和bottom元素定义矩形的位置,并从左下角测量到父容器的左下角。 width和height定义矩形的大小。 这两个值以Units属性指定的单位进行测量。 默认情况下,单位为像素。

ax.OuterPosition:坐标区域的大小和位置。 包括标签和边距,被指定为“左底部宽度高度”格式的四元素向量。 位置值相对于父容器。 默认情况下,值的测量单位为像素。

ax.InnerPosition:此属性是只读的。 内坐标区域的大小和位置。 返回“左底部宽度高度”格式的四元素向量,不包含标签和边距。 left和bottom元素定义矩形的位置,并从左下角测量到父容器的左下角。 width和height定义矩形的大小。 这两个值以Units属性指定的单位进行测量。 默认情况下,单位为像素。

需要注意的是,在进行图形调整时应该先对label进行调整,这样才能确定下axes.OuterPositon的尺寸,在将其铺满figure使才不会出现label超出边界的问题。

仅当ax.Position采用默认规格化时,图形才会随窗口大小而变化。 另一方面,正常化的单位基于其容器,即图窗的大小被标准化为[0 0 1 1],包括ax在内的其他属性的大小单位全部被标准化。 这样将图形铺满窗户时,存在随着窗户尺寸的增大,图形与窗户的间隔也变大的缺点。

因此,以下脚本还存在一个问题,即如果多次使用此函数调整同一图形的大小,图形将超出窗口边界。 有关版本改进,请参阅:

版本代码的改进

解释器的选择和区别matlab的默认文本解释器是tex,解释器也可以分析处理某些公式,但在下标表示方面tex方法的下标经常下沉,影响外观,与期刊中的其他字体一致例如,tex的表示形式为{itF_n},latex的表示形式为F n F_n Fn。 因此,写公式时最好采用latex解释器。

图形调整脚本functionadjust_fig(fig、ax、leg、x_label、y_label ) %%此函数基本上表示函数图像的大小、坐标轴大小、线条大小和颜色等%%图像大小和背景设置fig.units=fig.position(:4 )=[ 8,5 ]; %图像大小(实际复制到word的大小) fig.Color=[1 1 1]; 设置%图像背景设置%X标签(必须先确定标签才能确定标签大小) ax.XLabel.String=x_label; ax.XLabel.Units='normalized '; %ax.xlabel.position(1:2 )=[0.5,-0.125]; ax.XLabel.Interpreter='latex

'; %采用latex解释器能够解决tex解释器下标下沉的问题%Y标签设置ax.YLabel.String = y_label;ax.YLabel.Units = 'normalized';%ax.YLabel.Position(1:2) = [-0.15, 0.5];ax.YLabel.Interpreter = 'latex';%axes铺满figure设置方法ax.Units = 'normalized';%将其设置为normalized可使其随figure的调整而调整%ax.OuterPosition(3:4) = [8,5.5]; %设置绘图区域尺寸(包括标签)outerpos = ax.OuterPosition;%获取坐标轴文本标签的边距(即标尺文字序列)ti = ax.TightInset;left = outerpos(1)+1.1*ti(1) ;%1.1用于预留一点边界范围,否则导出的图片边缘线条会有缺失(该值可根据图形尺寸进行调整),下同。bottom = outerpos(2)+1.1*ti(2) ;ax_width = outerpos(3) - 1.25*(ti(1) + ti(3));ax_height = outerpos(4) - 1.15*(ti(2) + ti(4));ax.Position = [left bottom ax_width ax_height]; ax.LineWidth = 1; %设置坐标轴宽度ax.FontName = 'Times New Roman';ax.FontSize = 10;ax.TickLabelInterpreter = 'latex';ax.XGrid = 'on'ax.YGrid = 'on'ax.XMinorTick = 'on'; %次刻度线ax.YMinorTick = 'on';ax.TickLength(1) = 0.02;leg.Interpreter = 'latex';leg.Location = 'best';leg.Box = 'on';end 脚本使用效果 fig = figure;ax = axes(fig);plot(-forcedata(:,2),'r','LineWidth',0.7) %切向力hold onplot( forcedata(:,3),'g','LineWidth',0.7) %轴向力plot( forcedata(:,4),'b','LineWidth',0.7) %法向力leg = legend('$F_t$','$F_a$','$F_n$');%set(leg,'Location','NorthEast','FontName','Times New Roman','FontSize',10)box onxlim([xlim1 xlim2])adjust_fig(fig, ax, leg, 'Samples', '$F$/N')

图形后处理常用方法

图形绘制完成后,一般直接复制到word中即可,或者另存为svg在粘贴如word中也行。如果要进行后续处理,可以将其直接复制到visio或者AI软件中,在进行处理。
需要注意的是,将matlab图形复制到visio中,可以点击取消组合,进而对图形的每一项进行重新调整。

主要参考资料

华中科技大学cjdmg:科技论文作图规范
MATLAB: 绘制出版级论文插图的经验
[Matlab] 如何将axes填充整个Figure
Matlab、Visio导出精美论文插图——位置与尺寸设置

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。