以前我一直以栅格格式(JPG,PNG)输出Matlab数据
有没有办法以矢量格式(SVG)从Matlab导出绘图。我需要它将这些图插入到LaTeX文档中。
我到目前为止唯一发现的是来自mathworks的插件和来自stackexchange的答案,但这看起来相当复杂
答案 0 :(得分:6)
还有matlab2tikz和matlabfrag导出到带有注释的eps,用于导入到LaTeX。
Here是我使用matlabfrag的一个例子。
我也和一位Mathworks工程师讨论过这个问题,他同意这种工具没有一个很好的工具,因为每个人都希望用它做不同的事情(我已经提到了两种不同的LaTeX方法) )。因此,最好的办法是使用不同的工具,看看哪种最适合你。
大多数时候我不得不对轴,标签的字体大小等进行修补以获得我想要的结果(顺便说一下调整传奇是最糟糕的地狱)。
答案 1 :(得分:4)
我通常在Latex文档中使用两个Matlab图。我通常使用的是.eps格式,是一种Matlab可以输出的矢量格式。您应该在Matlab中编辑大部分内容,在图中使用代码或手册。然后就去File - >导出设置并单击“展开轴以填充图形”,配置所需的任何内容并导出到.eps,然后您可以将图像导入任何基于矢量的软件,Inkscape或Adobe Illustrator,以根据需要进行最终调整。只需将eps撞到Latex,就可以完美呈现。此外,pdflatex通常会将EPS转换为PDF,因此如果您想节省时间,可以先从Inkscape或Illustrator将其转换为PDF。
答案 2 :(得分:2)
对于我的出版物,我将图表保存为EPS(矢量化),然后在Inkscape中进行任何最后的修改。然后通过Inkscape,您可以将其导出为类似SVG的东西。 Inkscape有一堆工具可以方便地清理绘图(例如简化路径和着色)。
这就是我如何制作以下T-s diagram:
答案 3 :(得分:0)
我目前使用FEX包plot2svg来完成您提到的任务。
使用起来非常简单:将包含脚本的文件夹添加到matlab路径后,您就可以了
plot2svg('myplot.svg',gcf);
将您当前的数字保存在svg中。 (当然你可以将gcf
(= GetCurrentFigure)更改为另一个句柄以保存其他已打开的数字。)
实际上,这是我发现以PDE工具箱生成的矢量方式图导出的唯一方法。
答案 4 :(得分:0)
.eps文件很容易导出并与LaTeX一起使用。我在每个项目中使用一个函数来格式化和保存绘图到LaTeX项目。它非常容易。以下行中的“eps”可以更改为任何Matlab图像类型。
类似的东西:
figures = sort(findobj('MenuBar','figure'));
for ii = 1:length(figures)
saveas(gcf,['Figures/',num2str(ii)],'eps')
end
答案 5 :(得分:0)
我已经在.eps中导出了一个matlab图形,然后用GIMP将它转换为.png。事实证明,以这种方式获得的.png文件的质量远高于通过export或saveas选项直接从MATLAB图形文件获得的.png文件。请注意,我在打开GIMP中的.eps文件时使用了更高的分辨率。此外,我在matlab导出设置中选择了“自动缩放字体”。我用pdf-latex
答案 6 :(得分:0)
自2014a以来,Matlab矢量图在根级别被打破。
所以不要费心去.png格式。
我的忧郁问题,在matlab Q& A部分进一步反思: https://se.mathworks.com/matlabcentral/answers/290313-why-is-vector-graphics-chopped-into-pieces