一文讲全如何用MATLAB给科技论文作图

您所在的位置:网站首页 科技论文写作案例分析模板图片 一文讲全如何用MATLAB给科技论文作图

一文讲全如何用MATLAB给科技论文作图

2024-07-17 03:00| 来源: 网络整理| 查看: 265

实际上论文修图是很麻烦的一件事情,除去数据本身需要反复测试,保证完全没有问题之外,图片本身也要兼具美观和分辨率的要求。这里记录一下写科研论文过程中,遇到的作图要求和解决方法。方便日后论文投稿过来复制粘贴(反正一定没人看,给自己看就好)

当然论文写作的作图可以借助很多软件,比如说笔者还用到了gnuplot和tecplot,但是那个并不熟悉,菜鸡如我还是以matlab为主。

提高图片分辨率

首先是分辨率要求,不同的地方要求不一样,不过基本上都在2000*2000上下。而Matlab默认的保存分辨率是不达标的。需要自己选择保存为更高的分辨率。方法为网上比较容易检索到的,方法为:

当前图片->文件->导出设置->渲染->分辨率(dpi):修改自动为600->导出 在这里插入图片描述 通常这样分辨率就满足要求了,如果你觉得还不够,还可以把600手工输入到更高。但是这种方式有一个缺陷,就是和你保存图片时图片本身的大小有关。你把图片的窗口放大,再保存,就能得到更高的分辨率,这个不是特别稳定。

基础作图

直接上代码和注释,调线型这类问题太基础了随便百度就能找到,或者你可以直接使用help找到,这里不多说:

figure(1); plot(steps,log10(resid_p),'k-',... steps,log10(resid_c),'b--',... 'LineWidth',1.5); %设置线宽,contour这类建议还是用其他作图软件更好看 legend('Couette flow','Cavity flow'); %图例 xlabel('iteration steps'); %x轴 ylabel('log_{10}(residual)'); %y轴 axis([0 8000 -12 4]); %xy的范围 %title('resid hitstory'); %图片标题,因为通常文献里面会带说明,这里注释不需要

在这里插入图片描述

设置作图细节

需要设置的有字体,坐标轴刻度间隔,子刻度等等。这里的设置方法分新旧版matlab之分,旧版使用set,比如说:

set(gca,'xtick',0:2000:8000); %x方向刻度 set(gca,'xminortick','on'); %打开x方向的子刻度 set(gca,'ytick',-12:4:4); %y方向的刻度 set(gca,'FontSize',16); %字体

如果这还不够用,还可以在作图之后做更多的微调,这里是Matlab2014a的打开方式: 当前图片->编辑->轴属性->刻度or更多属性 在这里插入图片描述

但是旧版这里是无法调整分刻度具体有几个,我这里的分刻度就特别多,但是没法调整。

第二种参数的设置方式需要新版的软件,笔者这里使用的是Matlab2018b。新版的软件也可以向下兼容使用set,但是这里的参数设置也可以变成:

ax = gca; ax.XLim = [0,8000]; %设置x,y上下限 ax.YLim = [-12,4]; ax.XTick = [0:2000:8000]; %x,y方向刻度 ax.YTick = [-12:4:4]; ax.XAxis.MinorTickValues = [0:1000:8000]; %设置x,y方向分刻度 ax.YAxis.MinorTickValues = [-12:2:4]; ax.XAxis.MinorTick = 'on'; ax.YAxis.MinorTick = 'on';

其中gca是一个结构体,网上把这个东西叫做图像句柄。另外,这里还有一个网上四处在抄的函数(多少年过去了,你们敢不敢写点新东西),我也挂在这里了,本质和我这里的是一样的:

function dxyMINOR(nx,ny) %nx指定x轴主刻度间分开小刻度的份数 %ny指定y轴主刻度间分开小刻度的份数 ax = gca; %XY limit value xlim = ax.XLim; ylim = ax.YLim; %XY tick value xtick = ax.XTick; ytick = ax.YTick; %XY dtick dxtick = (xtick(2) - xtick(1)); dytick = (ytick(2) - ytick(1)); %XY minortick interval dmx = dxtick/nx; dmy = dytick/ny; %XY minortick value ax.XAxis.MinorTick = 'on'; ax.XAxis.MinorTickValues = [xtick(1):dmx:xtick(end)]; ax.YAxis.MinorTick = 'on'; ax.YAxis.MinorTickValues = [ytick(1):dmy:ytick(end)]; % first element is for 2d fig ticklength ax.TickLength = [0.015,0.05]; end

当然新版的Matlab的作图函数强大了很多,实际上这里的gca是一个结构体,但是gca直接是不在内存空间的,我们必须把它赋值给其他的变量。而gca在Matlab2014a里面不支持,必须得新版的matlab。我们再来看看这个结构体里面还有什么:

>> ax = gca; >> gca ans = Axes - 属性: XLim: [0 8000] YLim: [-10.5737 5] XScale: 'linear' YScale: 'linear' GridLineStyle: '-' Position: [0.1300 0.1525 0.7750 0.7725] Units: 'normalized' 显示 所有属性 ALim: [0 1] ALimMode: 'auto' ActivePositionProperty: 'outerposition' AlphaScale: 'linear' Alphamap: [1×64 double] AmbientLightColor: [1 1 1] BeingDeleted: 'off' Box: 'on' BoxStyle: 'back' BusyAction: 'queue' ButtonDownFcn: '' CLim: [0 1] CLimMode: 'auto' CameraPosition: [1×3 double] CameraPositionMode: 'auto' CameraTarget: [4000 -2.786848066789656e+00 0] CameraTargetMode: 'auto' CameraUpVector: [0 1 0] CameraUpVectorMode: 'auto' CameraViewAngle: 6.608610360311923e+00 CameraViewAngleMode: 'auto' Children: [2×1 Line] Clipping: 'on' ClippingStyle: '3dbox' Color: [1 1 1] ColorOrder: [7×3 double] ColorOrderIndex: 1 ColorScale: 'linear' Colormap: [64×3 double] CreateFcn: '' CurrentPoint: [2×3 double] DataAspectRatio: [4000 7.786848066789656e+00 1] DataAspectRatioMode: 'auto' DeleteFcn: '' FontAngle: 'normal' FontName: 'Helvetica' FontSize: 16 FontSizeMode: 'manual' FontSmoothing: 'on' FontUnits: 'points' FontWeight: 'normal' GridAlpha: 1.500000000000000e-01 GridAlphaMode: 'auto' GridColor: [1×3 double] GridColorMode: 'auto' GridLineStyle: '-' HandleVisibility: 'on' HitTest: 'on' Interruptible: 'on' LabelFontSizeMultiplier: 1.100000000000000e+00 Layer: 'bottom' Legend: [1×1 Legend] LineStyleOrder: '-' LineStyleOrderIndex: 1 LineWidth: 5.000000000000000e-01 MinorGridAlpha: 2.500000000000000e-01 MinorGridAlphaMode: 'auto' MinorGridColor: [1×3 double] MinorGridColorMode: 'auto' MinorGridLineStyle: ':' NextPlot: 'replace' OuterPosition: [0 0 1 1] Parent: [1×1 Figure] PickableParts: 'visible' PlotBoxAspectRatio: [1×3 double] PlotBoxAspectRatioMode: 'auto' Position: [1×4 double] Projection: 'orthographic' Selected: 'off' SelectionHighlight: 'on' SortMethod: 'childorder' Tag: '' TickDir: 'in' TickDirMode: 'auto' TickLabelInterpreter: 'tex' TickLength: [1.000000000000000e-02 2.500000000000000e-02] TightInset: [1×4 double] Title: [1×1 Text] TitleFontSizeMultiplier: 1.100000000000000e+00 TitleFontWeight: 'normal' Toolbar: [1×1 AxesToolbar] Type: 'axes' UIContextMenu: [0×0 GraphicsPlaceholder] Units: 'normalized' UserData: [] View: [0 90] Visible: 'on' XAxis: [1×1 NumericRuler] XAxisLocation: 'bottom' XColor: [1×3 double] XColorMode: 'auto' XDir: 'normal' XGrid: 'off' XLabel: [1×1 Text] XLim: [0 8000] XLimMode: 'auto' XMinorGrid: 'off' XMinorTick: 'on' XScale: 'linear' XTick: [0 2000 4000 6000 8000] XTickLabel: {5×1 cell} XTickLabelMode: 'auto' XTickLabelRotation: 0 XTickMode: 'manual' YAxis: [1×1 NumericRuler] YAxisLocation: 'left' YColor: [1×3 double] YColorMode: 'auto' YDir: 'normal' YGrid: 'off' YLabel: [1×1 Text] YLim: [-1.057369613357931e+01 5] YLimMode: 'auto' YMinorGrid: 'off' YMinorTick: 'off' YScale: 'linear' YTick: [-12 -8 -4 0 4] YTickLabel: {4×1 cell} YTickLabelMode: 'auto' YTickLabelRotation: 0 YTickMode: 'manual' ZAxis: [1×1 NumericRuler] ZColor: [1×3 double] ZColorMode: 'auto' ZDir: 'normal' ZGrid: 'off' ZLabel: [1×1 Text] ZLim: [-1 1] ZLimMode: 'auto' ZMinorGrid: 'off' ZMinorTick: 'off' ZScale: 'linear' ZTick: [-1 0 1] ZTickLabel: '' ZTickLabelMode: 'auto' ZTickLabelRotation: 0 ZTickMode: 'auto'

比如说我们想要调整其中一个参数,直接在其中修改即可,比如说如果我们希望调整字体,我们只需要这样写:

>> ax.FontSize ans = 16 >> ax.FontSize = 18;

当然如上参数也可以在作图以后通过窗口里的编辑选项调整,不过笔者更加喜欢用代码。

OK!就酱~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3