(小记)matlab画二维图
以前经常用matlab画图,很熟练。太久没用 又全忘了。特此写个笔记总结一下。
补充:有同学问 simulink的scope输出的图怎么修改放论文里。
1)matlab2018中simulink scope数据导出到matlab变量中;先把数值导进工作区间
2)调用工作区间的值进行画图,套用下面的模板进行修改
画图plot各种设置写法
出图模板自用
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(y)
-
plot(x1,y1,x2,y2,……)
-
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)

-
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的图,但是每次出图都得设置。
更多推荐


所有评论(0)