> 文章列表 > MTLAB绘图

MTLAB绘图

MTLAB绘图

这里写目录标题

  • 一、图例
    • 1、散点图
  • 二、绘图
    • 1、总体图形参数
    • 2、坐标、图框、网格
      • 图框
      • 去上右边框小刻度
      • 网格
      • 坐标
      • 范围和刻度控制
      • 旋转 坐标、刻度
    • 3、图例
      • 图例位置和方向 Location和Orientation
      • 图例加标题 、分多列
    • 4、文本 +字、字体、字号
    • 5、线型 +符号
    • 6、颜色栏 colorbar
    • 7、颜色
    • 8、混合双图---设置左右y轴
  • 三、实例
    • 一、线性回归
      • 1、散点图

一、图例

1、散点图

MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 colorbar

%%%%绘图  xx,yy轴,10-点大小尺寸;r-残差值以着色;filled-设置为实心
scatter(xx,yy,10,r,'filled')     %散点
h = colorbar;
set(get(h,'label'),'string','残差值');   %图例

二、绘图

1、总体图形参数

gcf 返回当前Figure 对象的句柄值
gca 返回当前axes 对象的句柄值
set(gcf,’unit’,’centimeters’,’position’,[10 5 7 5]);
这就是对图形的位置及大小进行设置。单位为厘米,大小为7cm×5cm,图形起点坐标为(10cm,5cm)表示左下点离显示器左侧边界10cm,离下侧边界5cm。
将图形大小设置好之后,就需要设置实际的图在figure中的比例,这就需要对图形的坐标进行设置。
set(gca,‘Position’,[.2 .2 .7 .65]);
位置[.2 .2 .7 .65]表示所画的图形在figure中所占的比例,前两个值表示位置,后两个值表示大小。

title('图形名称')%(都放在单引号内)
xlabel('x轴说明')
ylabel('y轴说明')
text(x,y,'图形说明+文本大小','fontsize',16)  %文本+大小
legend('图例1','图例2',)
set(gca,‘XTickLabel’,[1991:1:2009]);%给X轴坐标加标签 (1991-2009间隔1xtickangle(50)%更改x轴标签角度

2、坐标、图框、网格

图框

box on:打开
box off:关闭

去上右边框小刻度

新建坐标

box off
ax2 = axes('Position',get(gca,'Position'),...'Color','none',...'XAxisLocation','top',...'YAxisLocation','right',...'XColor','k','YColor','k');
set(ax2,'YTick', []);
set(ax2,'XTick', []);

网格

grid minor :成最小的网格线
grid on 打开 grid off关闭

坐标

axis equal :纵横坐标轴采用等长刻度
axis square:产生正方形坐标系(默认为矩形)
axis auto:使用默认设置
axis off:取消坐标轴
axis on :显示坐标轴
axis([xmin xmax ymin ymax])
命令可以限制二维图像的x和y坐标,此处输入axis([0 2pi -2 2]),限制横坐标为0到2pi,纵坐标为-2到2。

范围和刻度控制

set(gca,'XLim',[0 10]);%X轴的数据显示范围
set(gca,'XTick',[0:1:10]);%设置要显示坐标刻度,0-10间隔1
set(gca,'XTickLabel',[0:1:10]);%给坐标加标签
使用xticks()函数,xticklabels()函数,以及yticks()函数在指定位置显示横坐标和纵坐标刻度值,间距可以不一致。
xticks([-3pi -2pi -pi 0 pi 2pi 3pi])
xticklabels({-3\\pi’,-2\\pi’,-\\pi’,0,‘\\pi’,2\\pi’,3\\pi’})
yticks([-1 -0.9 -0.5 0 0.4 0.7 1])
a= linspace(-15,0.1,15); %坐标刻度-15~15、间距0.1
b=sin(a);
plot(a,b)
将绘制一个横坐标-1515的正弦函数曲线图。

旋转 坐标、刻度

旋转横坐标和纵坐标标签或刻度的角度,使用xtickangle()函数和ytickangle()函数

xtickangle(50) %x轴刻度旋转50°
ytickangle(80)

3、图例

legend(‘text1‘,‘text2‘,…)

或者,我们也可以使用DisplayName属性指定图例标签。调用绘图函数时,将DisplayName属性设置为“名称-值”对。然后,调用legend命令以创建图例。

x1 = linspace(0,5);
y1 = sin(x1/2);
plot(x1,y1,'DisplayName','sin(x/2)')

图例位置和方向 Location和Orientation

‘Orientation’,'horizon’水平排列

legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')

‘north’ 坐标区中的顶部 ‘south’ 坐标区中的底部
‘east’ 坐标区中的右侧区域 ‘west’ 坐标区中的左侧区域
‘northeast’ 坐标区中的右上角(二维坐标区的默认值) ‘northwest’ 坐标区中的左上角
‘southeast’ 坐标区中的右下角 ‘southwest’ 坐标区中的左下角
‘northoutside’ 坐标区的上方 ‘southoutside’ 坐标区的下方
‘eastoutside’ 到坐标区的右侧 ‘westoutside’ 到坐标区的左侧
‘northeastoutside’ 坐标区外的右上角(三维坐标区的默认值)
‘northwestoutside’ 坐标区外的左上角
‘southeastoutside’ 坐标区外的右下角 ‘southwestoutside’ 坐标区外的左下角
‘best’ 在与绘图中的数据发生最少冲突的坐标区内
‘bestoutside’ 坐标区的右上角之外(当图例为垂直方向时)或坐标区下方(当图例为水平方向时)
‘none’ 由 Position 属性决定。可使用 Position 属性指定自定义位置。

图例加标题 、分多列

lgd = legend;
lgd.Title.String = ‘2016 Data’ 添加图例标题
lgd.NumColumns = 2 分两列
标题添加方法2
lgd = legend(‘cos(x)’,‘cos(2x)’);
title(lgd,‘My Legend Title’)

4、文本 +字、字体、字号

文本
在图形中任意位置添加文本注释,用到的函数为text。其调用语法为

text(x,y,‘text’),x、y为标注点的坐标位置,text为添加的文本注释。txt设置多行
txt = {'',''}  %设置多行
txt = {['N=',num2str(N), '  R=', num2str(R)],['RMSE=',num2str(RMSE)],}
%N,R同行;RMSE换行; num2str()添加变量值为字符串
text(x,y,txt)

字体、字号

set(gca,'Fontname','宋体','FontSize',14)
ylabel('标签Y','Fontname','宋体','FontSize',14);
xlabel('标签X','Fontname','宋体','FontSize',14);

文本注释,bilibili

5、线型 +符号

例 plot(x,y,‘k*’,x1,y1,‘b–’)
MTLAB绘图

plot(x,a,'r-','linewidth',1) 
%x,y,r-红色实线;linewidth线粗细设置

6、颜色栏 colorbar

7、颜色

常用配色推荐:https://www.jb51.net/article/257296.htm

8、混合双图—设置左右y轴

% 数据
Ncar=1:3;
% 柱状图数据
Norder1 = [800 1100 1250];
Norder2 = [420 550 625];
% 折线图数据
qcar1 = [1 2 3];
qcar2 = [2 4 6];% 打开新图
figure;
hold on;% 左边y轴(柱状图)
yyaxis left
bar(Ncar, [Norder1',Norder2']);
ylim([0 1500])
ylabel('Transfer speed')% 标记数据到柱状图
offset_vertical = 40;   % 根据需要调整
offset_horizon = 0.15;  % 根据需要调整
for i = 1:length(Norder1)if Norder1(i)>=0text(i - offset_horizon,Norder1(i) + offset_vertical,num2str(Norder1(i)),'VerticalAlignment','middle','HorizontalAlignment','center');elsetext(i - offset_horizon,Norder1(i) - offset_vertical,num2str(Norder1(i)),'VerticalAlignment','middle','HorizontalAlignment','center');end
end
for i = 1:length(Norder2)if Norder1(i)>=0text(i + offset_horizon,Norder2(i) + offset_vertical,num2str(Norder2(i)),'VerticalAlignment','middle','HorizontalAlignment','center');elsetext(i + offset_horizon,Norder2(i) - offset_vertical,num2str(Norder2(i)),'VerticalAlignment','middle','HorizontalAlignment','center');end
end% 右边y轴(折线图)
yyaxis right
plot(Ncar,qcar1,'ro-');
plot(Ncar,qcar2,'b*-');
ylim([0 8])
ylabel('Energy consumption per hour')% 图注
legend({'Low melting point crude oil transfer pipeline','High melting point crude oil transfer pipeline',...'Low melting point crude oil transfer pipeline','High melting point crude oil transfer pipeline'});% x轴
set(gca,'xtick', [1 2 3 4])

三、实例

一、线性回归

1、散点图

s = data(2,:);   %CE-318
m = data(3,:);   %MODISX = [ones(length(m),1), s'];%x'表示行向量转置为列向量
Y = m';
[ b,bint,r,rint,stats ] = regress(Y,X); %回归计算ii=1;
for i=1:size(r,1)if((r(i)<1 && r(i)>0) || (r(i)>-1 && r(i)<0))  %去除离群值day(ii) = data(1,i);xx(ii) = s(i);yy(ii) = m(i);ii=ii+1;end
end
XX = [ones(length(yy),1), xx'];%x'表示行向量转置为列向量  % ones(n,1)表示有常数项,如果无常数项可以去掉。
YY = yy';
[ b,bint,r,rint,stats ] = regress(YY,XX);  %重新回归
R=corrcoef(xx,yy);  
R = R(1,2);      %相关系数
N=size(xx,2)     %有效数值量
R2=stats(1);     %决定系数%%%%绘图  xx,yy轴,10-点大小尺寸;r-残差值以着色;filled-设置为实心
scatter(xx,yy,10,r,'filled')     %散点
h = colorbar;
set(get(h,'label'),'string','残差值');   %图例
% xlim([0 20]) % X,Y,Z轴取值范围
ylim([0 2.6])   %y轴范围
xlabel('CE-318')   %x轴标签
ylabel(name)
hold on      %保持添加图