如何修复 Matlab eps 文件中的虚线间距

How to fix dashed lines spacing in Matlab eps files

从 Matlab 保存 eps 文件时出现一些问题。虚线未打印,因为它是保存 eps 格式。但是,有几个可用的修复程序,例如最重要的 here.

但是对于较新的版本,在我的情况下是 R2016b,这些修复程序不再有效。我在 Matlab 网站上尝试了 4 种不同的提交。 None 他们成功了。谁能帮我理解,我必须在 eps 文件中的哪个位置进行修复?我可以手动完成。

看起来像出版物的结果 - 哦,格式化数字的乐趣。

您可能已经尝试过了,但是您是否尝试过调整 linewidth 参数,例如:

plot(x,y,'o-','linewidth',0.5)

此外,我不确定 OS 你用的是什么,但我在 mac 上使用 R2016b 并且以下完美运行:

A = rand(8,2);
plot(A(:,1),'r*--','linewidth',0.5);
hold on;
plot(A(:,2),'bs-','linewidth',0.5);
the_saveas_filename=sprintf('./test.eps');
print('-depsc2', the_saveas_filename);

文件交换 (here) 中可用的修复程序对新 Matlab 版本的 eps 文件失败(我的是 R2016b)。这是因为 Matlab 在写入 EPS 文件时更改了变量名称。文件交换中的修复程序现在会搜索以不同方式命名的变量,因此会损坏 EPS 文件。

我建议用户在 gedit 打开的 eps 中寻找 setdash。例如,我有

[2 2] 0 setdash

在虚线文件中。方括号内的第一个变量是破折号长度,第二个变量是破折号之间的间距。这看起来太拥挤了,几乎看起来像线宽为 3 的连续线。因此,我修改了

[8 8] 0 setdash

结果是虚线间距合理。

我就此问题提交了支持票,这是 MathWorks 的回复:

This is a known bug which is fixed with R2017b. Unfortunately, for older releases there is no workaround or patch available.

出现在Matlab 2018a中,使用print函数时问题依然存在。但是,如果您在图 window 中使用 File->Save as.. 菜单选项,虚线看起来会更好。不幸的是,该选项不允许您更改任何设置。

我在使用 R2017a 时遇到了同样的问题,但我找到了解决方案。

在图中转到 属性 编辑器并单击更多属性。

然后将渲染器模式设置为手动 和 OpenGL 的渲染器。 然后将各种线转换为 eps 就可以正常工作了。

我认为问题是渲染器会自动设置为画家,这就是线条都是实线的原因。

改进Sayed Raiq的答案,如果您需要保存大量图像或需要在代码中保存,则以下命令有效:

print('save_name','-depsc', '-opengl');

但是,当您使用 OpenGL 渲染器时,默认情况下渲染分辨率较低。 您可以使用以下方法更改分辨率:

print('save_name','-depsc', '-opengl', '-r500');

标志后的数字越大r,分辨率越高。