资源简介
用MATLAB生成达到出版质量的图形-export_fig.zip
本帖最后由 stellari 于 2013-5-28 16:03 编辑 MATLAB的绘图功能非常强大,但是有两个突出的问题:1、导出的图片质量不高;2、有时导出图片和figure中实际所见并不一致。所以导致大家正式发表专业文章时不经常用MATLAB作为首选的绘图软件。其实,只要解决了上面的两个问题,MATLAB也是可以生成能够达到出版水平的图形的。
简介
export_fig (见附件) 就是一个能够解决上述问题的工具包。首先,问题1的主要原因是MATLAB的默认绘图渲染器较为原始,所以画出的线条都有很明显的锯齿。而用export_fig导出的图片,所有的线条和文字都是经过抗锯齿处理的,所以视觉效果极佳;至于问题2,export_fig会严格按照figure上显示的内容去导出,是真正意义上的所见即所得。而且用export_fig导出的图片不会有MATLAB默认导出时那么大的白边,而是保证白边的范围仅能容纳坐标轴和title,xlabel,ylabel,这样使得图片的尺寸减小,排版更方便。下两图选得虽然不是很有代表性,但是依然可以看出export_fig截出的图中白边大量减少,并且有非常先进的抗锯齿处理(比如,上图的红线在1-2范围内有很明显的锯齿,下图则几乎没有。坐标轴上的数字也是如此)。背景中的网格也由虚线变成了“淡实线”,更符合现代制图的审美观。
figure中直接选择save的结果:
test1_1.png figure中选择save的保存结果
export_fig的结果:
test2_2.png export_fig的保存结果
使用方法
export_fig的使用方法很简单,解压附件中的文件,然后将得到的所有文件放入某目录中,再将该目录添加至MATLAB的搜索路径中。导出图片时,输入
export 文件名
即可将当前figure中的图输出至文件中。export_fig能够自动识别文件名的扩展名,并保存成相应的格式。
注意
如果需要导出pdf或eps格式的话,需要下载并安装ghostscript,具体可以参见export_fig的发布页
http://www.mathworks.com/matlabc ... nge/23629-exportfig
题外话
其实不要小看MATLAB。MATLAB其实隐藏了一个非常强大的绘图模式: HG2。这个模式平时是隐藏的,只能在MATLAB启动时通过附加参数的形式开启,即可以将MATLAB的快捷方式中的指向目标由
"...\...\MATLAB\R2013a\bin\MATLAB.exe"
改为
"...\...\MATLAB\R2013a\bin\MATLAB.exe" -hgVersion 2
(注意hgVersion 和 2 之间有一个空格)
然后使用这个快捷方式打开MATLAB。在界面上没有任何区别,但是当你画出图之后,你会发现一切都不同了。
(下二图转载自undocumentedmatlab.com,左图为普通模式,右图为HG2模式)
HG1_plot.png 普通(HG1)模式(无责任转载自undocumentedmatlab.com) HG2_plot.png HG2模式(无责任转载自undocumentedmatlab.com)
版本在2010以上,感兴趣的同学不妨一试(版本更早其实也可以尝试)。当然目前HG2模式尚不稳定,所以并没有向一般用户公开。不过这很可能是下一代MATLAB的发展方向,说不定R2014a的默认绘图模式就是HG2!
总结
目前公认最好的图片导出方案还是export_fig。这个工具包在MATLAB Central上一直下载量排行第一。这个工具包可以完全替代MATLAB自己的图片导出功能,强烈推荐大家使用。我本人现在正在写的一篇文章就全部使用export_fig,而没有使用其他任何的绘图软件。
HG2模式应该是MATLAB的未来发展方向,大家可以先尝个鲜。很有可能在不久的将来就能够在MATLAB中直接生成这种高质量的图像了。
本帖最后由 stellari 于 2013-5-28 16:03 编辑 MATLAB的绘图功能非常强大,但是有两个突出的问题:1、导出的图片质量不高;2、有时导出图片和figure中实际所见并不一致。所以导致大家正式发表专业文章时不经常用MATLAB作为首选的绘图软件。其实,只要解决了上面的两个问题,MATLAB也是可以生成能够达到出版水平的图形的。
简介
export_fig (见附件) 就是一个能够解决上述问题的工具包。首先,问题1的主要原因是MATLAB的默认绘图渲染器较为原始,所以画出的线条都有很明显的锯齿。而用export_fig导出的图片,所有的线条和文字都是经过抗锯齿处理的,所以视觉效果极佳;至于问题2,export_fig会严格按照figure上显示的内容去导出,是真正意义上的所见即所得。而且用export_fig导出的图片不会有MATLAB默认导出时那么大的白边,而是保证白边的范围仅能容纳坐标轴和title,xlabel,ylabel,这样使得图片的尺寸减小,排版更方便。下两图选得虽然不是很有代表性,但是依然可以看出export_fig截出的图中白边大量减少,并且有非常先进的抗锯齿处理(比如,上图的红线在1-2范围内有很明显的锯齿,下图则几乎没有。坐标轴上的数字也是如此)。背景中的网格也由虚线变成了“淡实线”,更符合现代制图的审美观。
figure中直接选择save的结果:
test1_1.png figure中选择save的保存结果
export_fig的结果:
test2_2.png export_fig的保存结果
使用方法
export_fig的使用方法很简单,解压附件中的文件,然后将得到的所有文件放入某目录中,再将该目录添加至MATLAB的搜索路径中。导出图片时,输入
export 文件名
即可将当前figure中的图输出至文件中。export_fig能够自动识别文件名的扩展名,并保存成相应的格式。
注意
如果需要导出pdf或eps格式的话,需要下载并安装ghostscript,具体可以参见export_fig的发布页
http://www.mathworks.com/matlabc ... nge/23629-exportfig
题外话
其实不要小看MATLAB。MATLAB其实隐藏了一个非常强大的绘图模式: HG2。这个模式平时是隐藏的,只能在MATLAB启动时通过附加参数的形式开启,即可以将MATLAB的快捷方式中的指向目标由
"...\...\MATLAB\R2013a\bin\MATLAB.exe"
改为
"...\...\MATLAB\R2013a\bin\MATLAB.exe" -hgVersion 2
(注意hgVersion 和 2 之间有一个空格)
然后使用这个快捷方式打开MATLAB。在界面上没有任何区别,但是当你画出图之后,你会发现一切都不同了。
(下二图转载自undocumentedmatlab.com,左图为普通模式,右图为HG2模式)
HG1_plot.png 普通(HG1)模式(无责任转载自undocumentedmatlab.com) HG2_plot.png HG2模式(无责任转载自undocumentedmatlab.com)
版本在2010以上,感兴趣的同学不妨一试(版本更早其实也可以尝试)。当然目前HG2模式尚不稳定,所以并没有向一般用户公开。不过这很可能是下一代MATLAB的发展方向,说不定R2014a的默认绘图模式就是HG2!
总结
目前公认最好的图片导出方案还是export_fig。这个工具包在MATLAB Central上一直下载量排行第一。这个工具包可以完全替代MATLAB自己的图片导出功能,强烈推荐大家使用。我本人现在正在写的一篇文章就全部使用export_fig,而没有使用其他任何的绘图软件。
HG2模式应该是MATLAB的未来发展方向,大家可以先尝个鲜。很有可能在不久的将来就能够在MATLAB中直接生成这种高质量的图像了。
代码片段和文件信息
%COPYFIG Create a copy of a figure without changing the figure
%
% Examples:
% fh_new = copyfig(fh_old)
%
% This function will create a copy of a figure but not change the figure
% as copyobj sometimes does e.g. by changing legends.
%
% IN:
% fh_old - The handle of the figure to be copied. Default: gcf.
%
% OUT:
% fh_new - The handle of the created figure.
% Copyright (C) Oliver Woodford 2012
function fh = copyfig(fh)
% Set the default
if nargin == 0
fh = gcf;
end
% Is there a legend?
if isempty(findobj(fh ‘Type‘ ‘axes‘ ‘Tag‘ ‘legend‘))
% Safe to copy using copyobj
fh = copyobj(fh 0);
else
% copyobj will change the figure so save and then load it instead
tmp_nam = [tempname ‘.fig‘];
hgsave(fh tmp_nam);
fh = hgload(tmp_nam);
delete(tmp_nam);
end
return
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 846 2012-08-30 13:27 copyfig.m
文件 5151 2012-08-30 13:27 eps2pdf.m
文件 29829 2012-12-12 16:49 export_fig.m
文件 5956 2012-08-30 13:27 fix_lines.m
文件 4342 2012-12-12 16:33 ghostsc
文件 3484 2012-12-12 16:52 isolate_axes.m
文件 1315 2013-03-22 10:34 license.txt
文件 1524 2012-08-30 13:27 pdf2eps.m
文件 3068 2012-09-27 18:29 pdftops.m
文件 6474 2012-10-26 13:22 print2array.m
文件 7809 2013-03-22 14:26 print2eps.m
文件 2462 2013-01-10 17:20 user_string.m
相关资源
- 小波与FFT去噪-小波与FFT去噪.m
- RBF神经网络用于函数拟合与模式识别
- MATLAB动画演示程序汇总-MATLAB 动画演示
- Matlab阶跃折射率分布均匀光纤的光场
- 小波的代码-sub_m.m
- matlab串级PID仿真模型-串级PID.rar
- matlab实现视频中动态目标跟踪程序及
- Matlab模拟退火算法-模拟退火.zip
- SPWM有需求的看过来-siqu_sanxiang_SPWM.m
- Matlab无线信道建模与仿真-无线信道建
- 基于MATLAB的粒子群优化算法及其应用
- 求助BP神经网络温度预测问题-MATLAB实
- 图像复原matlab程序-图像复原matlab程序
- MATLAB数据处理-MATLAB数据处理.rar
- hopfield神经网络的matlab仿真程序-hopf
- Matlab边缘检测和区域生长图像分割算
- 发动机万有特性曲线绘制MATLAB程序-
-
T型三电平Simuli
nk仿真模型开环控制 - 基于蚁群算法和神经网络匹配算法的
- 电力电子电机控制系统仿真模型-Fig
- 基于MATLAB的数字基带传输系统仿真实
- Matlab的qpsk调制解调AWGN信道包括频谱及
- matlab模拟退火工具箱-matlab模拟退火工
- 基于MATLAB的IIR和FIR滤波器设计-实验
- Matlab模糊PID参数设定-work.rar
-
汽车动力学simuli
nk仿真程序很精典 - 无刷直流电机BLDC仿真程序及说明文档
- CMI编码matlab实现
- EM算法估计GMM
- Matlab2016b破解
评论
共有 条评论