日常学习需要输出很多图表,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进行属性的调整,比较快捷。
代码可能还可以加更多功能,不过目前已经够用了。一行代码直接调用函数可视化方便多了。
办公自动化是很好的思路,提高效率很关键,适当造造自己的轮子吧。