您的位置:首页 > 编程语言 > MATLAB

一文搞懂Matlab画图那些事(上篇)

2016-04-05 15:26 309 查看
题记:临时需要Matlab画个曲线图,突然发现有些命令竟然忘掉了,于是各种查。这里博主整理合并关于画图那些命令,只为让你轻松搞定Matlab画图这些琐事,那么,来吧!

说明:本博文主要是二维图形的绘制,二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。

一 绘图常用函数

plot函数详谈

常见的plot函数的格式有plot(Y),plot(X1,Y1),plot(x,y1,x,y2),plot(X1,Y1,LineSpec,…)

A. plot(Y)如果Y是m×n的数组,以1:m为X横坐标,Y中的每一列元素为Y坐标,绘制n条曲线;如果Y是n×1或者1×n的向量,则以1:n为横坐标,Y为坐标表绘制1条曲线。

>> y=[0 0.58 0.70 0.95 0.83 0.25];
>> plot(y)




B. plot(X1,Y1)如果X和Y都是数组,按列取坐标数据绘图,此时它们必须具有相同的尺寸;如果X和Y其中一个是向量另一个为数组,X和Y中尺寸相等的方向对应绘制多条曲线;如果X和Y其中一个是标量另一个为向量,那么将绘制垂直X或者Y轴离散的点。

>> x=linspace(0,2*pi,30); % 生成一组线性等距的数值
>> y=sin(x);
>> plot(x,y)




C.plot(x,y1,x,y2)画多条曲线,适用于不同方法下的对比的情况。

另一种画法是利用hold命令。在已经画好的图形上,若设置hold on,MATLA将把新的plot命令产生的图形画在原来的图形上。而命令hold off 将结束这个过程。

在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为:plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。

>> x=0:pi/100:2*pi; %X的区间设置为0到2
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,x,y2)


D. plot(X1,Y1,LineSpec,…)通过参数LineSpec指定曲线的曲线属性,它包括线型、标记符和颜色。plot函数支持同时绘制任意组图形。

>> plot(x,y,'r','LineWidth',0.5);
% 颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青.
% 线型 线方式: - 实线 :点线 -. 虚点线 - - 波折线
% 线型 点方式: . 圆点 +加号 * 星号 x x形 o 小圆


>> x=0:pi/100:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,'go',x,y2,'b-.')
%其中参数'go'和'b-.'表示图形的颜色和线型。g表示绿色,o表示图形线型为圆圈;b表示蓝色,-.表示图形线型为点划线。




二 绘图辅助函数

图形标记的困惑

在绘制图形的同时,可以对图形加上一些说明,如图形名称、图形某一部分的含义、坐标说明等,将这些操作称为添加图形标记。

>> title(‘加图形标题’); %当前轴的正上方居中位置处输出文本作为标题
>> xlabel('加X轴标记');
>> ylabel('加Y轴标记');
>> text(X,Y,'添加文本');
>> grid; %添加网格
%%%实例%%%%%
>> text(2.5,0.7,’sinx’)  %在横坐标2.5,纵坐标0.7处标记sinx文字
>> text(10,0.6,'\leftarrow CNN');   %标注时候加上左箭头的标记
>> gtext(‘sinx’) %用鼠标来确定字符串的位置


另外在生成的图的时候,有时背景颜色我们不需要默认的灰色,而改成其他颜色,则见下面的命令:

set(gcf,'Color',[1 1 1]);  %将背景设置为白色


坐标系的烦恼

在缺省情况下MATLAB自动选择图形的横、纵坐标的比例,如果你对这个比例不满意,可以用axis命令控制,常用的有:

axis([xmin xmax ymin ymax]) [ ]中分别给出x轴和y轴的最大值、最小值

axis(‘equal’) x轴和y轴的单位长度相同

axis(‘off’) 清除坐标刻度

>> axis([0 6 0 1])  %X轴0~6,y轴0~1
>> subplot(m,n,p)
%多幅图形,可以在同一个画面上建立几个坐标系, 用命令;把一个画面分成m×n个图形区域, p代表当前的区域号,在每个区域中分别画一个图


实例

x = [0,10,20,30,40];
y = [0,0.6,0.8,0.9,0.96];
scatter(x,y,1,'k');
plot(x,y,'r','LineWidth',0.5);
axis([0 40 0 1]);
title('不同方法结果对比');
%坐标轴上面标注内容
xlabel('迭代次数'),ylabel('测试精度');
text(10,0.6,'\leftarrow CNN');   %在曲线任意位置加上text
legend('CNN','MPCNN');  %在图上加上标注,并且可以随意拖动


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 图形 函数