将饼图另存为 pdf 时出现未知白线

unknown white lines when saving pie chart as pdf

当我将饼图另存为 pdf 时,pdf 有未知的白线。为了简化问题,我将代码修改为最通用的形式,如下所示。

clc;
h=pie(1);
%set the pie chart color to black
h(1).FaceColor = 'k';

我选择使用黑色的原因是白色线条与黑色背景形成鲜明对比。请看附件pdf图

我还在这个link: weird artifacts when saving pie chart as pdf 找到了一个有同样问题的类似线程。暂无解决方案。

我的系统配置:macOS Sierra 版本 10.12。 Matlab R2016b.

欢迎任何意见。谢谢。

我以前遇到过这种情况,我不是 100% 了解它的原因,我认为这可能是 MATLAB 如何创建矢量文件以及 PDF 查看器如何消除图像锯齿的组合。有人告诉我,您可以通过更改 MATLAB 使用的渲染器来解决这个问题,但就我个人而言,我运气不太好。

作为解决方法,您可以尝试将图形保存为 SVG,在矢量编辑器(如 inkscape)中打开并复制图形两次(根据 this 网站)。然后,您可以将 Inkscape 中的图形保存为 PDF 文件。

我发现在你调用 pie 之后添加其中任何 一个 解决了问题:

  • set(gcf,'renderermode','manual');
  • set(gcf,'renderer','opengl');
  • set(gcf,'renderer','opengl','renderermode','manual');

这很奇怪,因为如果你尝试 get(gcf,'renderer') 它会显示它是 opengl(至少在我的机器上),但是它被解释为画家算法,直到渲染模式切换到手动的。如果您将渲染器设置为 opengl,这种情况会自动发生,或者您可以将渲染模式设置为手动,然后它 (MATLAB) 实际上会查看渲染器 属性。

这是概念证明

clc;
h=pie(1);
%set the pie chart color to black
h(1).FaceColor = 'k';


% set(gcf,'rendererMode','manual');
set(gcf,'renderer','opengl','renderermode','manual')
saveas(gcf,'pie.pdf'); 

我必须将其转换为图像才能显示在此处,但 .pdf 看起来一样(即没有白线)。

我在使用 2015 版 Matlab 时遇到了同样的问题,但问题似乎在旧版本中消失了。试试 Matlab 2014 或更低版本。