来源
- 使用matlab完成绘图后,希望直接导出矢量图供写作,而不是PNG等位图。
- 有些论文对图的数量还有限制,有时需要将多个图进行合并。虽然可以直接使用matlab,latex等进行合并,但感觉这两种方法比较麻烦。
我更偏向于matlab导出矢量图,放到Visio进行合并和处理,在导出矢量图,使用latex进行写作(只支持eps和PDF格式矢量图)。
matlab导出矢量图
使用 print
函数或者 saveas
函数, 设置相应导出的矢量图格式,详见matlab参考文档。
print(Fig1, 'ChenFig1', '-dpng', '-r600')
print(Fig1, 'ChenFig1', '-dpdf', '-r600')
print(Fig1, 'ChenFig1', '-depsc', '-r600')
print(Fig1, 'ChenFig1', '-dmeta', '-r600')
print(Fig1, 'ChenFig1', '-dsvg', '-r600')
print(Fig1, 'ChenFig1', '-dpsc', '-r600')
Visio导出PDF矢量图
我推荐直接使用Visio导出PDF,然后提供给latex写作。
在Visio中新建多个 “页面(page)”, 一个页面进行合并,标记等操作。另外一个页面用于导出PDF,这个需要调整页面大小,从而消除导出PDF周边空白,也可以使用PDF编辑器调整导出PDF周围空白(修改后导出图形比较麻烦 )。
Visio可以使用的格式
- emf(缩放文字不会变动)
- svg (缩放文字会变动, 会导致较大缩放比例时整个布局变动)
Visio不可可以使用的格式
- eps
- ps
- asv
Visio另存为,选择PDF,在导出选项中选择 “选择”(推荐)或者“当前页”。
如何消除Visio导出PDF四周的空白
- 文件->选项->自定义功能区->主选项卡,勾选开发工具,点击确定
- 点击开发工具->显示ShapeSheet->页,将Print Properties,PageLeftMargin,PageRightMargin,PageTopMargin,PageBottomMargin全部设置为0
- 设计->大小,适应绘图
- 文件->导出,导出为pdf格式
- 推荐导出是使用“选择”而不是“当前页”,因为当前页导出的PDF文件四周是有边框的,latex生成的文档的图片也是有边框的,不美观。
Adobe的illustrator制作矢量图
使用Adobe的illustrator软件替代 前面提到的Visio软件 对需要合并,标注,修改的图片进行操作, 然后导出矢量图。相对来说这个软件是专业矢量图处理软件,上述格式应该都可以处理。但自己不熟悉,没有进一步尝试。
不建议matlab导出到这个软件的格式
- emf (文字大小变化)
推荐matlab导出到这个软件的格式
- eps
- ps
- svg
matlab导出PDF格式图片调整边缘空白
网上找到的关于导出PDF格式文件去除边缘空白的代码:
% 导出到pdf
set(gcf,'Units','Inches');
pos = get(gcf,'Position');
set(gcf,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)])
filename = ''; % 设定导出文件名
print(gcf,filename,'-dpdf','-r0')
close(gcf)
PPT
和Visio类似,也可以用PPT处理。PPT的好处是可以使用office自带的公式,并且可以支持 latex 输入。
但是注意导出PDF时最好使用 “Save as Adobe PDF”。这个导出的接近真实PPT效果。保存副本选 PDF 容易导致格式兼容问题。
Save as Adobe PDF
另存副本 PDF