在实际的操作中,我们能够通过代码设计轻松命令Matlab绘制图形,下面是为总结Matlab最常用的几种绘图函数(包括二维与三维制图)。
一、二维图像绘制函数plot()
1.plot(X,Y);
当且仅当X,Y均为实数向量且维数相同(相同长度的行向量或者相同长度长度的列向量)时有效,Matlab将会按照其顺序一一对应其横坐标及纵坐标即 [X(i),Y(i)]。若X或者Y均为复数变量,则会忽略虚数部分。
X=[1 2 3 4 5 6 7 8]; %均为行向量或者均为列向量
Y=[8 7 6 5 4 3 2 1];
plot(X,Y);
X=[1 2 3 4 5 6 7 8+6i]; %Matlab画图时提示警告自动忽略虚数部分
Y=[8 7 6 5 4 3 2 1+6i];
plot(X,Y);
(上述两者画出来的图形一致)
若X、Y一个为向量,一个为矩阵,且向量长度等于矩阵的行数或者列数,函数会按行或者列将矩阵分解为多个向量分别与X\Y一一对应,在图像中分别画出其对应图线。
X=[1 2 3 4 5 6 7 8]; %X为向量
Y=[8 7 6 5 4 3 2 1;7 6 5 4 3 2 1 0; 6 5 4 3 2 1 0 -1]; %Y为三行八列的矩阵
plot(X,Y);
(画出来的效果如上)
2.plot(X1,Y1, X2,Y2, .....,Xn,Yn)
Matlab支持多函数同时画图,且在同一画布上展现,效果不多赘述。
3.plot(X,Y,S)
在Matlab中可以自定义其图像样式,根据自己的风格或者论文的要求可以切换多种线与坐标的样式。下面概括出一些常用的定义符。(注意黑色的简写不是b而是k)
(1)线形、颜色定义符
线形及颜色符号表
定义符 | - | -- | : | -. |
线形 | 实线(Matlab默认) | 划线 | 点线 | 点划线 |
定义符 | r | g | b | c |
颜色 | 红色(red) | 绿色(green) | 蓝色(blue) | 青色(cyan) |
定义符 | m | y | k | w |
颜色 | 品红(magenta) | 黄色(yellow) | 黑色(black) | 白色(white) |
(2)标记类型定义符
标记类型定义符表
定义符 | + | o | * | . | x |
标记类型 | 加号 | 小圆圈 | 星号 | 实点 | 交叉号 |
定义符 | d | ^ | v | > | < |
标记类型 | 菱形(diamond) | 向上三角形 | 向下三角形 | 向右三角形 | 向左三角形 |
定义符 | s | h | p | ||
标记类型 | 正方形(square) | 正六角星(hexagon) | 正五角星(pentagon) |
(3)指定标记大小及颜色
MarkerSize |
标记大小,指定为正值 |
MarkerEdgeColor |
标记轮廓颜色,指定为颜色名称或 RGB 三元组 |
MarkerFaceColor |
标记内部颜色,指定为颜色名称或 RGB 三元组 |
例如像下列例子:
X=-pi:pi/10:pi;
Y= sin(X);
plot(X,Y,'--mv','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor',[0.4 0.6 0.7])
%'--mv'表示图像用划线表示,品红色,所在具体值用向下三角形表示
%后面的MarkerSize、MarkerEdgeColor、MarkerFaceColor分别表示标记符的大小、边框颜色、内容颜色
效果如下:(注意MarkerFaceColor若用RGB三元组表示的话各元素需要用空格隔开且可不用‘’(引号)包裹,但是若用颜色名称表示的话则需要‘’包裹,如‘g’)
该部分需要读者多去实践观察其现象,可以对着上面的图标试一下具体效果。
二、坐标轴设置函数
Matlab中的绘图常常与坐标轴有关,下列概括的是常用的坐标轴函数。
坐标轴设置函数
函数 | 功能 |
axis | 设置横纵坐标轴的区间 |
xlable/ylable | 添加横纵坐标轴的标注 |
legend | 给坐标轴中的图形添加图例 |
text | 在坐标轴中添加字符串 |
grid | 添加网格 |
box | 添加边框 |
xlim/ylim | 设置横纵坐标区间 |
1.axis可以用来设置横纵坐标轴的区间,添加不同的代码可以实现多种要求。(该行可不加‘;’)
(1) axis([xmin,xmax,ymin,ymax])
控制在画布中的x/y轴的区间,在上知识点的代码基础上加上此行代码,其效果为:
(无论其要求的区间是否有值,画布都会画出)
axis([-5,10,-2,2])
(2) axis equal
控制画布的呈现出来的图像横坐标与纵坐标的刻度值相等。
(横纵坐标的刻度值皆为1)
(3) axis square
控制画布的呈现出来的图像横纵坐标长度相等。(此时画布形状为正方形)
(4) axis auto
系统默认样式(默认值),将画布就可能填满。
2.xlim/ylim函数,可设置或者返回区间函数
(1) xlim (ylim)
返回横坐标区间,返回的是一个二维行向量 [min max]
纵坐标方向也是如此方法。
(2) xlim([xmin,xmax]) (ylim同理)
用于设置横纵坐标的画布展示区间,与上述的axis([-5,10,-2,2])的方法类似,也不多赘述了
3.legend函数
在画布中的图形添加图示文字。
(1)legend('str1第一个字符串',‘str2第二个字符串’,'str3第三个字符串'......)
它会按照代码之前的画图顺序给每一个图像附近标上每一个字符串,因此顺序很重要。在这里补充一个知识点:当需要在一个画布中画出两条或以上曲线时,在每一次作图时需要在后面加上“hold on;”以让下一次画图仍保持在该画布上。
X=-pi:pi/10:pi;
Y1= sin(X);
Y2= cos(X);
plot(X,Y1,'--mv','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor',[0.4 0.6 0.7])
hold on;
plot(X,Y2,'--m^','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor',[0.4 0.6 0.7])
hold on;
legend('sinx','cosx')
例如上述代码,legend内部的第一个字符串会去匹配第一条曲线即X-Y1,后面类似。运行的结果如下:
(图示若没有修改其位置则默认在右上角)
(2)根据曲线图像需要修改图示位置时
legend('str1第一个字符串',‘str2第二个字符串’,'str3第三个字符串'...,‘Location’,'direction')
有时候由于图示在默认位置处遮挡住图像需要修改位置时,可以在后面加上location属性。
其方向有
northwest | north | northeast |
west | east | |
southwest | south | southeast |
上述例子将legend函数改为“legend('sinx','cosx','Location','northwest')”,可以让函数分布更加规整好看。
4.text函数 text(x,y,'string')
text函数可以在坐标轴的制指定位置添加字符串,用以更直接对图像的解释。其坐标位置(x,y)与横纵坐标分布有关。
以上述图像为例,若想在坐标轴(-3,0.3)处加上字符串“y=sinx”用以对图线的解释,则可以在原有代码上加上text函数,即
X=-pi:pi/10:pi;
Y1= sin(X);
Y2= cos(X);
plot(X,Y1,'--mv','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor',[0.4 0.6 0.7])
hold on;
plot(X,Y2,'--m^','MarkerSize',10,'MarkerEdgeColor','k','MarkerFaceColor',[0.4 0.6 0.7])
hold on;
legend('sinx','cosx','Location','northwest')
text(-3,0.3,'y=sinx')
效果如下:
5.label函数 xlabel/ylabel
label函数用于给横纵坐标添加标注,调用形式为xlabel('str1')或者ylabel('str2'),实现比较简单不过多叙述了。
三、分贴小结
由于知识点过多一个帖子分享篇幅较大,因此打算多写一个帖子分享后面关于画图的知识点,若有需要继续学习的可以找后面的帖子研究一下。若有什么问题可以在评论区留言,或者私聊我,我会力所能及的帮助一同学习的人。大家一同进步吧!