MATLAB plot 画图封装函数【一行代码设置好标题、图例所有参数】

日常学习需要输出很多图表,MATLAB一个个调参数太麻烦了,想着画图可视化封装成一个函数吧。直接调用就行。

displayFig函数

复制下面的代码到你的m文件。

function ax = displayFig(flag,x,y,xlbl,ylbl,title,lgd)
%% flag:
%   1:单xlabel单ylabel单线
%   2.单xlabel双ylabel双线
%   3.单xlabel单ylabel多线
%% x:
%   flag==1:x为一向量
%   flag==2:x为一向量
%   flag==3:x为元胞数组,每一个元胞元素为单根曲线的自变量x
%% y:
%   flag==1:y为一向量
%   flag==2:y为元胞数组,第一个元胞元素y坐标在左侧,第二个元胞元素y坐标在右侧
%   flag==3:y为元胞数组,每一个元胞元素为单根曲线的因变量y
%% xlbl:x的label
%% ylbl:y的label
%   flag==1:ylbl为一字符串
%   flag==2:ylbl为元胞数组,内元素为字符串,第一个元胞元素ylbl在图左侧,第二个元胞元素ylbl坐标在图右侧
%   flag==3:ylbl为一字符串
%% title:图的标题   
%% lgd:图例
%   flag==1:lgd为一字符串,缺省为ylbl
%   flag==2:lgd为元胞数组,缺省为ylbl,内元素为字符串,第一个元胞元素代表第一根曲线,第二个元胞元素代表第二根曲线
%   flag==3:lgd为一字符串

if nargin==7 
%参数输全了就不操作
elseif nargin==6 && flag~=3
    lgd=ylbl;
else
    error("请给定图例!");
end

if flag==1
    plot(x,y);
    ax=gca;
    ax.XLabel.String=xlbl;
    ax.YLabel.String=ylbl;
    legend(lgd,'Location','best');

elseif flag==2
    yyaxis left
    plot(x,y{1});
    ax=gca;
    ax.XLabel.String=xlbl;
    ax.XScale='Linear';
    ax.YLabel.String=ylbl{1};
    
    yyaxis right
    plot(x,y{2});
    ax=gca;
    ax.XLabel.String=xlbl;
    ax.XScale='Linear';
    ax.YLabel.String=ylbl{2};
    ax.YLim=[0,max(y{2})*1.5];
    legend(lgd,'Location','best');
elseif flag==3
    for i=1:length(y)
        plot(x{i},y{i});
        hold on;
    end
    ax=gca;
    ax.XLabel.String=xlbl;
    ax.YLabel.String=ylbl;
    legend(lgd,'Location','best');
end
ax.Title.String=title;
end

例子1:单xlabel单ylabel单线

为了说明我写得比较详细。

x=[1,2,3,4,5];
y=[2,3,4,7,9];
flag=1;
xlbl='x';
ylbl='y';
title='例子1';
ax=displayFig(flag,x,y,xlbl,ylbl,title);

当然如果熟悉了可以写得简单一点。

x=[1,2,3,4,5];
y=[2,3,4,7,9];
ax=displayFig(1,x,y,‘x’,'y','例子1');

在这里插入图片描述

例子2:单xlabel双ylabel双线

为了说明我写得比较详细。

x=[1,2,3,4,5];
y={[2,3,4,7,9],[100,89,60,49,10]};
flag=2;
xlbl='x';
ylbl={'y1','y2'};
title='例子2';
ax=displayFig(flag,x,y,xlbl,ylbl,title);

当然如果熟悉了可以写得简单一点。

x=[1,2,3,4,5];
y={[2,3,4,7,9],[100,89,60,49,10]};
ax=displayFig(2,x,y,‘x’,{'y1','y2'},'例子2');

在这里插入图片描述

例子3:单xlabel单ylabel多线

为了说明我写得比较详细。

x={[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]};
y={[2,3,4,7,9],[4,6,7,10,12],[5,8,11,15,20]};
flag=3;
xlbl='x';
ylbl='y';
title='例子3';
lgd={'y1','y2','y3'};
ax=displayFig(flag,x,y,xlbl,ylbl,title,lgd);

当然如果熟悉了可以写得简单一点。

x={[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]};
y={[2,3,4,7,9],[4,6,7,10,12],[5,8,11,15,20]};
ax=displayFig(3,x,y,‘x’,'y','例子3',{'y1','y2','y3'});

在这里插入图片描述
如果还想修改图线中的某些参数,可以双击工作区workspace的ax进行属性的调整,比较快捷。

在这里插入图片描述

代码可能还可以加更多功能,不过目前已经够用了。一行代码直接调用函数可视化方便多了。

办公自动化是很好的思路,提高效率很关键,适当造造自己的轮子吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值