MATLAB的几种常用出图方式
最近写文经常使用MATLAB绘图、出图,略作总结以备以后使用。
一、图片来源-MATLAB绘图或者读取文件
1.绘图
绘图不写了,根据需要选取函数作图吧,这里给个简单的表格,不作详述:
| 绘图需求 | 使用函数 |
|---|---|
| 以下为二维坐标下绘图 | – |
| 笛卡尔直角坐标系下绘制曲线图 | plot() |
| x轴和y轴都取对数坐标时绘图 | loglog() |
| x轴取对数坐标,y轴取线性坐标时绘图 | semilogx() |
| y轴取对数坐标,x轴取线性坐标时绘图 | semilogy() |
| 带有两套y坐标轴的线性坐标系绘图 | plotyy() |
| 极坐标系条件下绘图 | ploar() |
| 以下为三维坐标下绘图 | 注:准备工作:先用meshgrid()生成二维网格 |
| 绘制空间曲线 | plot3() |
| 在填充网格条件下绘制三维曲面 | surf() |
| 在不填充网格条件下绘制三维曲面 | mesh() |
| 在填充网格条件下绘制三维图形的等高线 | contourf() |
| 在不填充网格条件下绘制三维图形的等高线 | contour() |
| 在填充网格条件下同时绘制三维曲面和等高线 | surfc() |
| 在不填充网格条件下同时绘制三维曲面和等高线 | meshc() |
| 绘制三维体(设置蛮复杂) | patch() |
| 以下为统计图绘图 | – |
| 绘制直方图Histogram | hist() |
| 绘制二维柱状图Bar charts | bar() |
| 绘制三维柱状图 | bar3() |
| 绘制堆积条形图Stackes bar charts | bar(y,‘stacked’) |
| 绘制水平条形图Horizontal bar charts | barh() |
| 绘制饼状图Pie charts | pie() |
| 绘制三维饼状图 | pie3() |
| 绘制阶梯图Stairs charts | stairs() |
| 绘制针状图Stem charts | stem() |
2.读取图片
首先确保要读取的文件在MATLAB的访问路径中,如果不在路径中要添加进去:

之后以图片Peppg_pig.jpg为例进行展示:

使用imread()命令进行文件读取:
I=imread('Peppa_pig.jpg'); %读取文件,并把读取结果赋值给I
可以看到已经成功读取文件:

只是读取还不够,我们还需要把图片显示出来,使用imshow()命令:
imshow(I); %显示图片
可以看到显示结果:

二、出图
1.直接出图
如果对图片没什么需求,可以直接点击 文件→另存为 进行存储:

这种出图结果有个特点,就是图窗里所有空间都会被保存,包括如下图所示边界处的灰色区域:

出图结果:

可以看到本来不存在于原图片中的灰色边界区域也被保存到了图片中。与之相似的还有使用MATLAB绘制的各种图形:

直接保存时也会把灰色边界区域保存进去。
2.使用导出设置出图
如果是使用MATLAB绘制的坐标图,可以使用 文件→导出设置 出图:

如果不希望保存的图片含有四周的灰色边界,可以在导出设置里的“大小”属性栏里勾选“放大坐标区至充满图窗”:

同时也可以对分辨率进行设置,例如需要600dpi的分辨率,可以在“渲染”属性栏里进行设置:

如果对字体字号有要求,也可以在“字体”属性栏里进行设置:

设置完毕之后点击右端的“应用于图窗”,可以浏览出图效果:

可以看到之前边界处的灰色区域消失了,之后点击导出即可导出需要的文件格式:

需要注意的是,导出设置消除边界灰色区域只对MATLAB绘制的坐标图有效,如果是读取的文件,灰色边界仍然会被导出:

可以看到边界仍然会被导出。
3.使用代码出图
对于读取的文件,想要消除边界,也有几种方法:
3.1使用imshow()设置参数,调试后出图
可以通过设置imshow()函数中的参数,使图片自适应地填充图窗,例:
imshow(I,'border','tight','initialmagnification','fit'); %使图片自适应地填充图窗
原理是将图片放大至有一边与图窗边界重合:

之后通过鼠标拖动,改变图窗大小至一合适的位置后,即可使用上述导出方法出图:

3.1所述方法好处是能可视化地调整图片大小,但是如果需要保证图片原始尺寸不被改变,则可以使用以下几种方法。
3.2使用imwrite()命令出图
通过imwrite(A,[map,filename])出图,
其中A是图像的数据,map为存储的位置,filename为存储的文件全名(包含格式),例如在D盘位置存储图片为tiff格式,则代码为:
imwrite(I,['D:\','Peppa_pig.tif']); %存储图片为tiff格式
可以看到存储的文件为原始尺寸下的tiff格式文件:

需要注意的是,imwrite()命令不能输出eps形式的文件,如果需要保存为eps格式则需要使用其他方式:

3.3使用saveas()命令出图:
基本格式为:saveas(fig,filename,formattype),
其中fig为要保存的图窗(注意是图窗而不是数据文件),filename为保存的文件名(不含扩展名),formattype为保存的文件格式,例如将上述文件保存为封装的 PostScript (EPS) 2 级彩色格式,则代码为:
imshow(I); %因为命令要求代入的是图窗而不是数据文件
h=figure(1); %所以要指定h为图窗1
saveas(h,'Peppa_pig','epsc2'); %以EPS格式保存文件
之后文件会被保存到MATLAB的当前文件夹内,可以通过复制或者剪切转移至其他地方:

这种方法保存的文件也为原始尺寸。
3.4使用print()命令出图:
基本格式为print(filename,formattype,formatoptions),
其中filename为文件名(不含扩展名),formattype为要输出的文件格式,formatoptions为其他选项,也可不写,即
print(filename,formattype),
例如将上述图片存储为eps格式,则代码为:
print('Peppa_pig','-depsc'); %存储为eps格式
文件仍然保存在当前文件夹下,可以通过复制或者剪切转移至其他位置。
4.使用工具包出图
个人感觉目前比较好用的工具包是export_fig,关于工具包的使用可以去查询相关资料了解,在此不作详述。
本文总结了MATLAB中几种常用的出图方式,包括直接出图、使用导出设置、使用代码(imshow(), imwrite(), saveas(), print())以及工具包出图。重点介绍了如何消除图片边界灰色区域,确保出图质量。"
45641627,5029507,ArcEngine地图制图:添加指北针教程,"['GIS开发', 'ArcGISEngine', '地图元素']
3940

被折叠的 条评论
为什么被折叠?



