以前经常用matlab画图,很熟练。太久没用 又全忘了。特此写个笔记总结一下。
补充:有同学问 simulink的scope输出的图怎么修改放论文里。
1)matlab2018中simulink scope数据导出到matlab变量中;先把数值导进工作区间
2)调用工作区间的值进行画图,套用下面的模板进行修改

出图模板自用

h3=figure('NumberTitle', 'off', 'Name', 'PID力值');
set(h3,'Position',[600,100,400,250]);
plot(x,y2,'r',x,y,'k');
axis([0 30 0 10]);
set(gca,'xtick',(0:2:30),'ytick',(0:2:10));
set(gca,'FontName','Times New Roman','FontSize',10,'LineWidth',0.5); %设置坐标轴
xlabel('\fontsize{10}\fontname{宋体}时间 \fontname{Times new roman}(s)');
ylabel('\fontsize{10}\fontname{宋体}力 \fontname{Times new roman}(N)');
str1='\fontsize{10}\fontname{宋体}期望力值';
str2='\fontsize{10}\fontname{宋体}实际力值';
legend(str1,str2,'location','East')

其中

axis([0 30 0 10]);
set(gca,'xtick',(0:2:30),'ytick',(0:2:10));
axis([x轴坐标下限 x轴坐标上限 y轴坐标下限  y轴坐标上限]);
以上两句 修改时,需要同时进行修改。

0.1导入.xlsx数据

注意:如果有字符串+数字是导不进去的

a=xlsread('路径');

在这里插入图片描述

0.2使用其中一列数据

第一列a(:,1)
第一行a(1,:)
在这里插入图片描述

1.x轴一般写法

1.x=起点:步长:终点
2.x=linspace(起点,终点,点的个数)
补充个技巧,一般用于画图:
当需要一个常数数列(n行1列 n的值取决于另外一个数组tData的长度,且每行内容相同 都为m)
n = size(tData,1);
y2=ones(n,1)*m;

2.plot常用语法格式

plot的常见语法格式

  1. plot(y)

  2. plot(x1,y1,x2,y2,……)

  3. plot(x1,y1,‘LineSpec1’,x2,y2,‘LineSpec2’……)

     等同于
     plot(x1,y1,'LineSpec1')
     hold all
     plot(x2,y2,'LineSpec2')
     其中LineSpec为曲线的属性,包括线型、标记、符和颜色
     注:绘制多条曲线时,默认颜色是从上至下的(r g b c m y k w)
    

在这里插入图片描述

  1. plot(x1,y1,‘LineSpec1’,‘linewidth’,‘线宽(可填1、2、3等)’……)

     在3的基础上还可以加线宽
     linewidth是原封不动的输入
     例:plot(x,y,'r','linewidth','1')
    

3.1坐标轴标注 即属性设置

坐标轴标注:

xlabel('内容')
ylabel('内容')

属性:
先设置坐标轴

set(gca,'FontName','Times New Roman','FontSize',9,'LineWidth',0.5); %设置坐标轴
坐标轴为新罗马9号字显示,线宽0.5

再设置标注

xlabel('\fontsize{9}\fontname{宋体}时间 \fontname{Times new roman}(s)');
其中:
fontsize{9}						字体大小:小五号
fontname{宋体}时间				字体格式:(中文)宋体		内容:时间
fontname{Times new roman}(s)')	字体格式:(英文)新罗马		内容:s

例:

x=0:0.1:3*pi;
plot(x,2*sin(2*x))
set(gca,'FontName','Times New Roman','FontSize',9,'LineWidth',0.5); 
xlabel('\fontsize{9}\fontname{宋体}时间 \fontname{Times new roman}(s)');
ylabel('\fontsize{9}\fontname{宋体}误差 \fontname{Times new roman}(mm)');

在这里插入图片描述

3.2文本标注

text(x,y,'string')

例:

x=0:0.1:3*pi;
	plot(x,2*sin(2*x))
	text(3*pi,2*sin(2*3*pi),'2sin*(2x)=0')

在这里插入图片描述

3.3图例标注

语法:legend('str1','str2','Location','位置')

位置

 	'North'             图顶
    'South'               底
    'East'                右
    'West'                左
    'NorthEast'           右上
    'NorthWest'			  左上	  
    'SouthEast' 		  右下
    'SouthWest' 		  左下

例:

x=0:0.1:3*pi;
y=2*sin(2*x);
plot(x,y)
set(gca,'FontName','Times New Roman','FontSize',9,'LineWidth',0.5); 
xlabel('\fontsize{9}\fontname{宋体}时间 \fontname{Times new roman}(s)');
ylabel('\fontsize{9}\fontname{宋体}误差 \fontname{Times new roman}(mm)');
str1='\fontsize{9}\fontname{宋体}期望输出';
legend(str1,'location','NorthEast')

在这里插入图片描述

4.画中画

a)截取全部

x=0:0.1:3*pi;
y=2*sin(2*x);
plot(x,y)
h1=axes('Position',[0.3 0.7 0.13 0.13]);
%四个参数依次定义了x轴距离下边距离,Y轴距离左边距离,和图形区域的宽高
%matlab中以figure区域左下坐标为(0,0),右上为(1,1)
plot(x,y,'k');	

在这里插入图片描述
b)截取部分

x=0:0.1:3*pi;
y=2*sin(2*x);
h1=axes('Position',[0.1 0.1 0.8 0.8]);
plot(x,y)

h2=axes('Position',[0.5 0.5 0.3 0.3]);
x2=1:0.1:2;
y2=2*sin(2*x2);
% 比如插入x在 [1 2]之间的函数变化
plot(x2,y2)

在这里插入图片描述

5.修改横坐标间距

例:

x=0:0.1:3*pi;
x2=0:0.1:2*pi;
y=2*sin(2*x);
plot(x,y)

原图
在这里插入图片描述
只用其中一段:
法一:
在这里插入图片描述
法二:
直接程序上修改
如同4.画中画(b)截取一部分
法三
也可以在程序里加上set(gca,‘XTick’,[0:1:5]); %0-5 间隔1

6.图像上加名字

1)图上

在plot下面加上

title('\fontsize{10}\fontname{宋体}误差')
注意:如果直接title('xx'),英文可以显示,中文会出现乱码。

在这里插入图片描述

2)框上

2.1)

figure('Name','PID力值');

在这里插入图片描述
2.2)

figure('NumberTitle', 'off', 'Name', 'PID力值');

在这里插入图片描述

7. 双坐标图

clc;
clear;


x=[1.6 1.75 1.9 2.15];
x1=[192;171;175;185];
y1=[186;172;168;234];
x2=[192;173;178;188];
y2=[194;175;168;239];

ex=x1-x2;
ey=y1-y2;

hold on;
xlabel('距离/m')
set(gca,'XTick',[1.6 1.75 1.9 2.15 ]);
%axis([1.6 2.15 150 240 ]);
yyaxis left
ylabel('x/pix');
plot(x,x1,'-s');
plot(x,x2,'--^');


yyaxis right
ylabel('y/pix');
plot(x,y1,'-s');
plot(x,y2,'--^');

hold off
legend('标志点x','实际坐标x','标志点y','实际坐标y','Location','North');
legend('boxoff')

补充

a)补充 去图的外框(上边和右边)

去除图的外框

set(gca,'box','off')

去除标签的框

legend('boxoff');

补充:https://wenku.baidu.com/view/972d1b67168884868762d656.html

b)关于gcf、gca(图大小 偏移 )

gcf是控制绘图区位置大小
gca是控制坐标
补充:https://jingyan.baidu.com/article/0eb457e5e13d7a03f1a905fc.html

set(gcf,'unit','centimeters','position',[1 2 20 15]);
set(gca,'Position',[ 0.1 0.1 0.45 0.45])

c)修改坐标里内容

原来:横坐标显示0-30
现在:改成字符+数字
在这里插入图片描述

d)高dpi保存图片

参考:Matlab导出高DPI图像——生成高分辨率.eps .tiff .jpg图像的方法
一般论文600dpi的图,但是每次出图都得设置。

更多推荐