matlab中对绘制二维平面图的操作
概要
1.讲一下如何生成一个有标题,两个纵向坐标,1个横向坐标,绘制两条线的图
2.讲一下如何设置让多个图绘制到同一张图片中
例如下图所示:
代码与说明
clc %清理命令窗口所有输出
clear all;%清理工作空间
range_start=10;%最小数据
range_end=50;%最大数据
num_data=100;%数据数量
range_diff=range_end-range_start;%差值
A(:,1)=rand(1,num_data)range_diff+range_start;%生成在10到50的100个随机数据
amplitude=rand5;%随机振幅
frequency=rand5;%随机频率
phase=2pirand;%随机相位
t=linspace(0,1pi,100);%生成时间轴
B(:,1)=amplitudesin(frequencyt+phase);%生成随机的正弦函数
C=[1.23,3.14];%写入了两个数
A_path=‘C:\Users\zxz\Desktop\matlab验证’;%预设一个地址来存放我们的图片
%以上是准备性代码,搞点数据出来画图,有兴趣的自行研究,不做详细说明
%绘图方案1:单个图像绘制
figure
yyaxis left %以左方纵坐标绘图
ylabel(‘零偏/单位:°/h’); %设置左边纵坐标
xlabel(‘时间/单位:1s’); %设置下方横坐标
plot(A(:,1),‘-’,‘Color’,‘b’) %用蓝色绘制A第一列数据
yyaxis right %以右方纵坐标绘图
ylabel(‘温度/单位:℃’); %设置右边纵坐标
plot(B(:,1),‘-’,‘Color’,‘r’) %用红色绘制A第一列数据
title(sprintf(‘指定数据1:%f;:指定数据2:%f’,C(1,1),C(1,2)));%用title和sprintf绘制抬头并写数据
legend(sprintf(‘验证数据1’),sprintf(‘验证数据2’))%依次对两个plot绘制曲线命名
fullPath=fullfile(A_path,sprintf(‘验证数据.jpg’));
saveas(gcf,fullPath);
%绘图方案2:多个图像绘制在一起
figure
subplot(2,3,1);
yyaxis left %以左方纵坐标绘图
ylabel(‘零偏/单位:°/h’); %设置左边纵坐标
xlabel(‘时间/单位:1s’); %设置下方横坐标
plot(A(:,1),‘-’,‘Color’,‘b’)
yyaxis right %以右方纵坐标绘图
ylabel(‘温度/单位:℃’); %设置右边纵坐标
plot(B(:,1),‘-’,‘Color’,‘r’)
title(sprintf(‘指定数据1:%f;:指定数据2:%f’,C(1,1),C(1,2)));
legend(sprintf(‘验证数据1’),sprintf(‘验证数据2’))
subplot(2,3,2);
yyaxis left %以左方纵坐标绘图
ylabel(‘零偏/单位:°/h’); %设置左边纵坐标
xlabel(‘时间/单位:1s’); %设置下方横坐标
plot(A(:,1),‘-’,‘Color’,‘b’)
yyaxis right %以右方纵坐标绘图
ylabel(‘温度/单位:℃’); %设置右边纵坐标
plot(B(:,1),‘-’,‘Color’,‘r’)
title(sprintf(‘指定数据1:%f;:指定数据2:%f’,C(1,1),C(1,2)));
legend(sprintf(‘验证数据1’),sprintf(‘验证数据2’))
subplot(2,3,3);
yyaxis left %以左方纵坐标绘图
ylabel(‘零偏/单位:°/h’); %设置左边纵坐标
xlabel(‘时间/单位:1s’); %设置下方横坐标
plot(A(:,1),‘-’,‘Color’,‘b’)
yyaxis right %以右方纵坐标绘图
ylabel(‘温度/单位:℃’); %设置右边纵坐标
plot(B(:,1),‘-’,‘Color’,‘r’)
title(sprintf(‘指定数据1:%f;:指定数据2:%f’,C(1,1),C(1,2)));
legend(sprintf(‘验证数据1’),sprintf(‘验证数据2’))
subplot(2,3,4);
yyaxis left %以左方纵坐标绘图
ylabel(‘零偏/单位:°/h’); %设置左边纵坐标
xlabel(‘时间/单位:1s’); %设置下方横坐标
plot(A(:,1),‘-’,‘Color’,‘b’)
yyaxis right %以右方纵坐标绘图
ylabel(‘温度/单位:℃’); %设置右边纵坐标
plot(B(:,1),‘-’,‘Color’,‘r’)
title(sprintf(‘指定数据1:%f;:指定数据2:%f’,C(1,1),C(1,2)));
legend(sprintf(‘验证数据1’),sprintf(‘验证数据2’))
subplot(2,3,5);
yyaxis left %以左方纵坐标绘图
ylabel(‘零偏/单位:°/h’); %设置左边纵坐标
xlabel(‘时间/单位:1s’); %设置下方横坐标
plot(A(:,1),‘-’,‘Color’,‘b’)
yyaxis right %以右方纵坐标绘图
ylabel(‘温度/单位:℃’); %设置右边纵坐标
plot(B(:,1),‘-’,‘Color’,‘r’)
title(sprintf(‘指定数据1:%f;:指定数据2:%f’,C(1,1),C(1,2)));
legend(sprintf(‘验证数据1’),sprintf(‘验证数据2’))
subplot(2,3,6);
yyaxis left %以左方纵坐标绘图
ylabel(‘零偏/单位:°/h’); %设置左边纵坐标
xlabel(‘时间/单位:1s’); %设置下方横坐标
plot(A(:,1),‘-’,‘Color’,‘b’)
yyaxis right %以右方纵坐标绘图
ylabel(‘温度/单位:℃’); %设置右边纵坐标
plot(B(:,1),‘-’,‘Color’,‘r’)
title(sprintf(‘指定数据1:%f;:指定数据2:%f’,C(1,1),C(1,2)));
legend(sprintf(‘验证数据1’),sprintf(‘验证数据2’))
fullPath=fullfile(A_path,sprintf(‘验证数据.jpg’));
saveas(gcf,fullPath);
%绘图方案3:多个图像绘制在一起并确认最后图像的大小和出现位置
%为节约空间我只列出修改部分
figure(‘position’,[100 100 1200 800])%为figure添加属性position,分别表示在屏幕左下角为坐标原点的100个像素点纵坐标,100个像素点横坐标位置处画一个长1200像素,宽800像素的图片,特别注意这里的大小是图形窗口的大小,根据我实际测试发现实际图像会大一些,达到了1875×1250像素
由于saveas保存无法设置分辨率,要想准确控制大小需要改为使用print输出图片的方式,这里就不扩展开来论述了。
一些用法解释
这里使用subplot(2,3,1);函数绘制多张图片,分别表示2行,3列的图片排列方式,1表示第一幅,这个排序是按照从左到右从上到下排列的;
figure(‘position’,[100 100 1200 800])%为figure添加属性position,分别表示在屏幕左下角为坐标原点的100个像素点纵坐标,100个像素点横坐标位置处画一个长1200像素,宽800像素的图片;
plot(A(:,1),‘-’,‘Color’,‘b’)中对于颜色,r是红,b是蓝,g是绿,其他颜色直接百度搜索即可得知
小结
以上把简单的绘图的方式描述了一下,但是很多细节还是需要学习完善,比如要如何缩减代码数量,提高代码复用率,如何绘制3d图等,以后我学到了再分享吧。