图形绘制
plot函数(二维线图)
语法 | 说明 |
---|---|
plot(X,Y) | 如果 X 和 Y 都是向量,则它们的长度必须相同。plot 函数绘制 Y 对 X 的图。如果 X 和 Y 均为矩阵,则它们的大小必须相同。plot 函数绘制 Y 的列对 X 的列的图;如果 X 或 Y 中的一个是向量而另一个是矩阵,则矩阵的各维中必须有一维与向量的长度相等。如果矩阵的行数等于向量长度,则 plot 函数绘制矩阵中的每一列对向量的图。如果矩阵的列数等于向量长度,则该函数绘制矩阵中的每一行对向量的图。如果矩阵为方阵,则该函数绘制每一列对向量的图;如果 X 或 Y 之一为标量,而另一个为标量或向量,则 plot 函数会绘制离散点。但是,要查看这些点,您必须指定标记符号绘制符号同前一篇的。 |
plot(X,Y,LineSpec) | 设置线型、标记符号和颜色。也同前一篇。 |
plot(X1,Y1,…,Xn,Yn) | 绘制多个 X、Y 对组的图,所有线条都使用相同的坐标区。 |
plot(X1,Y1,LineSpec1,…,Xn,Yn,LineSpecn) | 绘制多个,同时设置线型、颜色等 |
plot(Y) | 创建 Y 中数据对每个值索引的二维线图。如果 Y 是向量,x 轴的刻度范围是从 1 至 length(Y);如果 Y 是矩阵,则 plot 函数绘制 Y 中各列对其行号的图。x 轴的刻度范围是从 1 到 Y 的行数;如果 Y 是复数,则 plot 函数绘制 Y 的虚部对 Y 的实部的图,使得 plot(Y) 等效于 plot(real(Y),imag(Y))。 |
plot(Y,LineSpec) | 同上,并二外设置线型颜色 |
plot(___,Name,Value) | 使用一个或多个 Name,Value 对组参数指定线条属性。有关属性列表,请参阅 Line 属性。可以将此选项与前面语法中的任何输入参数组合一起使用。名称-值对组设置将应用于绘制的所有线条。同上篇的选项 |
plot(ax,___) | 将在由 ax 指定的坐标区中,而不是在当前坐标区 (gca) 中创建线条。选项 ax 可以位于前面的语法中的任何输入参数组合之前。(就是把一个图分成几块,在某一块上画的时候用) |
h = plot(___) | 返回由图形线条对象组成的列向量。在创建特定的图形线条后,可以使用 h 修改其属性。重点在后期修改,如不需要就完全用不上。 |
一个很好的帮助例子,顺便还包含了几个很好用的函数,可以在帮助中查到。
ax1 = subplot(2,1,1); % top subplot
x = linspace(0,3);
y1 = sin(5*x);
plot(ax1,x,y1)
title(ax1,'Top Subplot')
ylabel(ax1,'sin(5x)')
ax2 = subplot(2,1,2); % bottom subplot
y2 = sin(15*x);
plot(ax2,x,y2)
title(ax2,'Bottom Subplot')
ylabel(ax2,'sin(15x)')
ezplot函数(2019a已经不推荐使用该函数,因此,这里也不再学习该函数。)
fplot函数(绘制表达式或函数)
在笔记08中已经说明了
对于一些其他的图形绘制(例如饼状图、柱状图……)
打开matlab的绘图选项(要在右侧工作区选择好你要绘制的数据)就可以选择绘制的图形。
当然也可以使用函数绘制
线图 | 说明 |
---|---|
plot | 线性坐标区的二维线图 |
semilogx | 半对数刻度图 |
semilogy | 半对数刻度图(我没打错一个x,一个y) |
loglog | 双对数刻度图 |
area | 填充区域图 |
errorbar | 误差条形图 |
errorbar | 水平误差条形图 |
plot3 | 三维线图 |
comet | 彗星轨迹图 |
stacked plot | 堆叠图 |
针图和阶梯图 | 说明 |
---|---|
stem | 离散序列或针状图 |
stairs | 阶梯图 |
stairs3 | 三维针状图 |
条形图 | 说明 |
---|---|
bar | 条形图(可堆叠) |
barh | 水平条形图(可堆叠) |
bar3 | 三维条形图 |
bar3h | 三维水平条形图 |
plotmatrix | 散点图矩阵 |
histogram | 直方图 |
pareto | 帕累托图 |
plotmatrix | 散点矩阵 |
散点矩阵图被归到条形图,我也是很震惊。
散点图 | 说明 |
---|---|
scatter | 散点/气泡图 |
scatter3 | 三维散点 |
spy | 可视化稀疏模式 |
plotmatrix | 散点矩阵 |
图 | 说明 |
---|---|
graph | 绘制无向图 |
digraph | 绘制有向图 |
饼图 | 说明 |
---|---|
pie | 饼图 |
pie3 | 三维饼图 |
直方图 | 说明 |
---|---|
histogram | 直方图 |
histogram2 | 二维直方图 |
rose | 角直方图 |
……
所有的绘图功能函数都在绘图选项中,点击所有绘图就会显示。因为函数太多,再往下的就不一一列举。编写程序前在绘图选项中查找好对应图的函数,查询帮助就可以获得试用方法。
隐函数绘制
二维用fimplicit函数;三维用fimplicit3函数。
教程里花里胡哨的用什么isosurface函数(从三维体数据中提取等值面数据),matlab已经并且的有隐函数绘制函数非得炫,NB。
然而我并不觉得这样很炫。(左教程用isosurface绘制,右使用fimplicit绘制)教程用了12行代码。我用了3行。
对图形修饰
视角调整view函数
举个例子:
clc
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
subplot(2,2,1);mesh(X,Y,Z);
view(-37.5,30);
title('-37.5 30')
subplot(2,2,2);mesh(X,Y,Z);
view(0,90);
title('0 90')
subplot(2,2,3);mesh(X,Y,Z);
view(90,0);
title('90 0')
subplot(2,2,4);mesh(X,Y,Z);
view(-7,-10);
title('--7 -10')
运行后结果
如何让图像动起来
drawnow函数配合循环,在循环中不断刷新图像,就可以实现一个动态的显示。
clc
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
for c=1:360
mesh(X,Y,Z);
view(0,c);
drawnow;
end
它就会旋转一圈。
设置颜色着色属性shading函数
光照处理效果
创建光源对象light函数
颜色图编辑器
对三维图再加工。colormapeditor,在命令窗口栏输入即可调用此工具。
举个例子,用之前的代码画出图像。再打开颜色编辑器。在工具中的标准颜色中选择一种。
就变成了另一种颜色。
移动游标应用
就可以手动更改颜色。