我在 MATLAB 中尝试创建图形时遇到了问题。在详细介绍之前,让我先为您提供一些参考和背景。
我正在完成一份学校报告,并试图确保我的结果清晰专业地显示出来。我不能使用 LaTeX(这是固定的,相信我,我宁愿使用它),所以我在 MS Word 中排版。
总体而言,我发现使用 MATLAB 创建数据图可以产生非常好的结果。具体来说,我发现 .emf 文件可以提供最佳图像(据我所知,它们是矢量图像,放大时不会像素化/质量下降)。我使用的是 MATLAB 2016b。
在 MS Word 中我正在执行以下操作:
- 插入
- 文本
- 快速部件
- 字段
- 包含图片
- 然后我在对话框中链接该文件并选中“从源水平和垂直调整大小”框。
在 MATLAB 中我执行以下操作:
- 使用创建图形
plot
- 使用图形手柄(例如
MyFig.Property = Something
)设置PaperUnits
为英寸 - 使用图形手柄
PaperPosition = [ 0 0 6 4 ]
(对应于 6 英寸宽、4 英寸高的图形 - 最后,我使用该
saveas
功能将图形保存为meta
文件(Windows 增强型图元文件,.emf)
最终结果正是我想要的,并以矢量图像的形式出现在 MS Word 文档中(如上所述,将 Word 文档保存为 PDF 时保持矢量图像质量)。我可以通过更新所有字段轻松更新 Word 文档中的图表。我很欣赏这种工作流程/自动化,如果可能的话,我想保留它。
当我尝试将此过程应用于需要两个 y 轴的其中一个图时,问题就出现了。我在此图中所做的与其他图的不同之处在于:
- 使用
yyaxis
left
和right
创建两个 y 轴 - 使用
YAxis
的属性gca
对齐两个 y 轴的刻度标记 - 从那时起,我应用相同的 MATLAB 过程来保存如上所述的图形。
问题是保存的 .emf 文件不是矢量图像(与其他文件不同)。它显然看起来更糟,而且当我放大时会像素化。如果我删除第二个 y 轴,它就会再次正常工作。
有人知道 y 轴上可能是什么原因导致的,以及我该如何解决吗?我尝试了以下方法,但没有成功:
- 尺寸与 6x4 英寸不同
- 取消选中“在 MS Word 中水平和垂直调整框的大小”
- 改变图形的字体大小(使其变小)
我是否可以正确保存我的数据或者有没有更好的方法来做到这一点?
我可以提供任何其他信息来帮助解决这个问题吗?
答案1
我已经解决了这个问题。
问题似乎是,当我向图中添加第二个轴时,MATLAB 默认使用不同的渲染器来绘制图形。具体来说,就是创建位图图像的渲染器,因此最终产品的质量很差。我不知道为什么它确实做到了,但这样做的触发器(因为它默认为所有具有单个 y 轴的图的正确渲染器)是第二个 y 轴。
我通过简单地强制特定图形使用适当的渲染器(称为“画家”,见下文)进行渲染来解决了这个问题。
myfig.Renderer = 'painters';