Matlab 画图

                     

贡献者: addis

预备知识 Matlab 的函数

   Matlab 具有强大的画图功能,这里仅介绍一些基础知识。最常用的画图函数是 plot,例如

>> x = linspace(0, 2*pi, 100); y = sin(x);
>> plot(x, y);
结果如图 1 (左)所示。如果要在该坐标系继续画图,要用 hold on 命令(onhold 的输入变量),否则每用一次 plot,之前画过的图都会被清除。用 hold off 可以重新恢复自动清除。
>> y1 = cos(x);
>> hold on; plot(x, y1);
结果如图 1 (右)所示,注意新增曲线的颜色变化。

图
图 1:plot 函数

   如果我们要新建一个画图窗口,用 figure 函数。若要指定画图的颜色,可以添加 figure 的第三个变量,用一个字符表示颜色(red:'r',green:'g',blue:'b',yellow:'y',magenta:'m',cyan:'c',black:'k',white:'w')。例如

>> x2 = cos(x); y2 = sin(x);
>> figure; plot(x2, y2, 'r');
在新增的窗口中,结果如图 2 (左)所示。注意根据窗口尺寸的不同,$x$ 轴和 $y$ 轴的单位长度一般不同,若要使其相同,可以在 plot 后面用 axis equal 命令(其中字符串 equalaxis 函数的输入变量),得到图 2 (右)。

图
图 2:红色的单位圆

   若要调整坐标轴的范围,也可用 axis 函数。另外可以在 plot 的第三个变量的字符串中设定曲线的形状,用 xlabelylabel 函数分别设置 $x$ 轴和 $y$ 轴的文字,用 title 函数设置图片标题

>> plot(x2, y2, '.-r');
>> axis([-1.2, 1.2, -1.2, 1.2]);
>> xlabel('x'); ylabel('y'); title('unit circle');
其中 '.-' 表示带点的连线,点的坐标由 x2y2 决定(另外 '+-' 表示带加号的连线,'o-' 表示带圆圈的连线)。axis 中行矢量中的四个数分别是 $x$ 轴的最小最大值和 $y$ 轴的最小最大值。结果如图 3 (左)所示。

图
图 3:红色的单位圆

   要改变当前窗口中的字号,例如 set(gca, 'FontSize', 14);。其中 gca 获取当前坐标系的对象(get current axis),set 函数设置该对象的 FontSize 属性为 14。在画图窗口菜单中的 View -> Property Inspector 可以查看和修改一张图中任何对象的属性,包括画图窗口的大小和位置。

   除了 plot 以外,常用的还有 scatter 函数,用于画散点图。格式与 plot 相似。默认的散点形状是圆圈,但也可以在第三个变量中设置颜色和 '+''x''.' 等形状。例如

>> hold on; scatter(0, 0, 'b');
结果如图 3 (右)所示。

   如果直接通过菜单保存图片,会默认使用显示器的分辨率,要按指定的分辨率保存图片例如 exportgraphics(gcf, '文件名.png', 'Resolution', 300)。另外也可以用菜单或者 saveas() 保存为矢量图等格式。另外还有 print 函数也可以保存当前图片窗口:print('图片名', '-dpng', '-r300');

   最后,如果要关闭当前画图窗口,用 close 函数(无输入变量),如果要关闭所有窗口,用 close all 即可。

坐标显示

   可以用 axis 对象的 XTickXTickLabel 属性来设置坐标点和显示的文字,例如

figure; plot([1,2,3,2*pi],[1,2,3,5]);
set(gca,'XTick',0:pi/2:2*pi); % gca 用户获取当前的坐标轴对象
set(gca,'XTickLabel',{'0','\pi/2','\pi','3\pi/2','2\pi'});

图
图 4:设置坐标点和显示文字

1. pdf 导出

   如果直接用 Figure 窗口中的另存为或者命令 saveas(),那么导出的 pdf 可能有非常宽的白边。这时可以通过 Figure 的 Paper* 属性来控制页面的大小以及 pdf 在页面上的位置。

figure;
plot(1:10, rand(1, 10));

% Set the desired paper size (in inches)
paperWidth = 6;
paperHeight = 4;
set(gcf, 'PaperUnits', 'inches');
set(gcf, 'PaperSize', [paperWidth paperHeight]);

% Set the position and size of the figure on the paper
left = 0.5; % left margin (in inches)
bottom = 0.5; % bottom margin (in inches)
width = paperWidth - 1; % width of the figure (in inches)
height = paperHeight - 1; % height of the figure (in inches)
set(gcf, 'PaperPosition', [left bottom width height]);

% Save the figure as a PDF
saveas(gcf, 'figure.pdf');

                     

© 小时科技 保留一切权利