将饼图保存为pdf时未知的白线

时间:2017-07-28 01:55:00

标签: matlab pdf matlab-figure pie-chart

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

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

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

when-saving-piechart-as-pdf

我也在这个链接中发现了一个类似的问题:weird artifacts when saving pie chart as pdf。目前还没有提供解决方案。

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

欢迎任何输入。谢谢。

3 个答案:

答案 0 :(得分:2)

在您致电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看起来相同(即没有白线)。 what the pdf looks like

答案 1 :(得分:1)

我之前遇到过这种情况,我不是100%因为它的原因,我认为它可能是MATLAB如何创建矢量文件的组合,以及PDF查看器如何对图像进行抗锯齿处理。我被告知你可以通过更改MATLAB使用的渲染器来解决这个问题,但我个人并没有太多运气。

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

答案 2 :(得分:0)

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