【MATLAB学习笔记】绘图

您所在的位置:网站首页 a3图纸边框线宽度 【MATLAB学习笔记】绘图

【MATLAB学习笔记】绘图

2023-07-05 14:16| 来源: 网络整理| 查看: 265

目录 前言颜色配置数据准备errorbar函数绘制误差线patch函数绘制误差填充图细节调整设置次刻度线设置坐标轴线宽度、刻度线长度设置全局字体、刻度标签、图例取消上、右边框刻度线 保存图片总代码总结

前言

  关于MATLAB中errorbar函数和patch函数的使用以及美化加工。如有些细节的地方不清楚的可以点击此先去看看这篇文章: 【MATLAB学习笔记】绘图——去除上、右边框刻度

颜色配置

  这里分享一下本人常用的颜色配置: 在这里插入图片描述 对应的颜色代码如下

myColors = ["#9489fa"; "#f06464"; "#f7af59"; "#f0da49"; "#71c16f"; "#2aaaef"; "#5690dd"; "#bd88f5"; "#009db2"; "#024b51"; "#0780cf"; "#765005"]; 数据准备

  随机生成一些数据,这里有y和z两组数据,同时计算误差err。

x = 3:0.08:5; y = exp(1.1*x); y1 = y.*(1+0.1.*x); err = y1 - y; z = exp(1.3*x)+100; z1 = z.*(1+0.03.*x); err1 = z1 - z; errorbar函数绘制误差线

  errorbar第一个参数为x,第二个参数为y,第三个参数为误差。

f = figure("Name","误差"); e = errorbar(x,y,err); e.Color = myColors(1); % 颜色 e.LineWidth = 1.5; % 线宽 e.CapSize = 10; % 误差帽宽度 hold on e2 = errorbar(x,z,err1); e2.Color = myColors(2); e2.LineWidth = 1.5; e2.CapSize = 10;

在这里插入图片描述

patch函数绘制误差填充图

  patch函数可以绘制多边形的填充图,第一个参数为x坐标,第二个参数为y坐标,第三个参数为颜色(这里我先设置为红色r,再调整为自己的配色);其中fliplr(x)函数表示将x倒序输出。   下面的代码表示将误差边界围成一圈进行填充颜色:

pa = patch([x,fliplr(x)],[y-abs(err),fliplr(y+abs(err))],'r');

在此基础上,再做细节的调整:

% 绘制误差带 pa = patch([x,fliplr(x)],[y-abs(err),fliplr(y+abs(err))],'r'); pa.FaceColor = myColors(1); % 设置颜色 pa.FaceAlpha = 0.2; % 设置颜色透明度 pa.LineStyle = 'none'; % 设置误差带边界线为无 pa1 = patch([x,fliplr(x)],[z-abs(err1),fliplr(z+abs(err1))],'r'); pa1.FaceColor = myColors(2); pa1.FaceAlpha = 0.2; pa1.LineStyle = 'none';

在这里插入图片描述

细节调整 设置次刻度线 % 设置次刻度线 set(gca,'XMinorTick',true) set(gca,'YMinorTick',true) 设置坐标轴线宽度、刻度线长度 % 设置坐标轴宽度 set(gca,'linewidth',1) % 设置刻度线长度 set(gca,'ticklength',[0.015,0.25]) 设置全局字体、刻度 % 设置全局字体 set(gca,'FontName','Times New Roman','FontSize',13) % 设置坐标轴刻度 set(gca,'xlim',[min(x)*0.98,max(x)*1.02]) set(gca,'ylim',[0,1000]) set(gca,'ytick',0:200:1000) set(gca,'yticklabel',0:200:1000) 标签、图例

  这里用到了latex语法,具体的latex语法自行搜索。   还有一个简便的方法就是先在公式编辑器(Axmath、mathtype)输入,再转化为latex语法复制进MATLAB中就可以了。   注意:MATLAB采用latex语法的时候,需要将Interpreter设置为latex格式。

% 设置轴标签 xlabel('$$\mathrm{Strain} \enspace \varepsilon /\mathrm{MPa}\cdot \mathrm{MPa}^{-1}$$','Interpreter','latex') ylabel('$$\mathrm{Stress} \enspace \sigma /\mathrm{MPa}$$','Interpreter','latex') % 设置图例 legend('$$y=e^{1.1x}$$','$$y=e^{1.3x}+100$$','Interpreter','latex','Location','northwest','Fontsize',15) legend('boxoff') % 取消图例边框

在这里插入图片描述

取消上、右边框刻度线 % 去除上、右边框的刻度线 box off % 取消边框 ax1 = axes('Position',get(gca,'Position'),'XAxisLocation','top',... 'YAxisLocation','right','Color','none','XColor','k','YColor','k'); % 设置坐标区 set(ax1,'linewidth',0.9) set(ax1,'XTick', [],'YTick', []); % 去掉xy轴刻度 hold off

在这里插入图片描述

保存图片

  这里的exportgraphics是剪裁白边保存图像的函数。

% 保存图片 exportgraphics(f,'Infww_errorfig.png', 'Resolution',600)

在这里插入图片描述

总代码 clc;clear;close all set(0,"defaultfigurecolor","w"); %% % 配色表 myColors = ["#9489fa"; "#f06464"; "#f7af59"; "#f0da49"; "#71c16f"; "#2aaaef"; "#5690dd"; "#bd88f5"; "#009db2"; "#024b51"; "#0780cf"; "#765005"]; %% 数据 x = 3:0.08:5; y = exp(1.1*x); y1 = y.*(1+0.1.*x); err = y1 - y; z = exp(1.3*x)+100; z1 = z.*(1+0.03.*x); err1 = z1 - z; %% f = figure("Name","误差"); e = errorbar(x,y,err); e.Color = myColors(1); % 颜色 e.LineWidth = 1.5; % 线宽 e.CapSize = 10; % 误差帽宽度 hold on e2 = errorbar(x,z,err1); e2.Color = myColors(2); e2.LineWidth = 1.5; e2.CapSize = 10; %绘制误差带 pa = patch([x,fliplr(x)],[y-abs(err),fliplr(y+abs(err))],'r'); pa.FaceColor = myColors(1); % 设置颜色 pa.FaceAlpha = 0.2; % 设置颜色透明度 pa.LineStyle = 'none'; % 设置误差带边界线为无 pa1 = patch([x,fliplr(x)],[z-abs(err1),fliplr(z+abs(err1))],'r'); pa1.FaceColor = myColors(2); pa1.FaceAlpha = 0.2; pa1.LineStyle = 'none'; % 设置次刻度线 set(gca,'XMinorTick',true) set(gca,'YMinorTick',true) % 设置坐标轴宽度 set(gca,'linewidth',1) % 设置刻度线长度 set(gca,'ticklength',[0.015,0.25]) % 设置全局字体 set(gca,'FontName','Times New Roman','FontSize',13) % 设置坐标轴刻度 set(gca,'xlim',[min(x)*0.98,max(x)*1.02]) set(gca,'ylim',[0,1000]) set(gca,'ytick',0:200:1000) set(gca,'yticklabel',0:200:1000) % 设置轴标签 xlabel('$$\mathrm{Strain} \enspace \varepsilon /\mathrm{MPa}\cdot \mathrm{MPa}^{-1}$$','Interpreter','latex') ylabel('$$\mathrm{Stress} \enspace \sigma /\mathrm{MPa}$$','Interpreter','latex') % 设置图例 legend('$$y=e^{1.1x}$$','$$y=e^{1.3x}+100$$','Interpreter','latex','Location','northwest','Fontsize',15) legend('boxoff') % 取消图例边框 % 去除上、右边框的刻度线 box off % 取消边框 ax1 = axes('Position',get(gca,'Position'),'XAxisLocation','top',... 'YAxisLocation','right','Color','none','XColor','k','YColor','k'); % 设置坐标区 set(ax1,'linewidth',0.9) set(ax1,'XTick', [],'YTick', []); % 去掉xy轴刻度 hold off % 保存图片 exportgraphics(f,'Infww_errorfig.png', 'Resolution',600) 总结

  这只是一个基础的示例,实际中还会有更具体的、更细致的要求,这就需要再做额外调整;另外本人也仍在学习中,这只是个人的学习笔记,可能还有一些不足之处,欢迎指正。



【本文地址】


今日新闻


推荐新闻


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