【问题标题】:How to setup the 'renderer'?如何设置“渲染器”?
【发布时间】:2014-09-10 13:34:28
【问题描述】:

我想用 EPS 格式保存一个图形:

saveas(gca, 'test.eps','epsc');

图形是用'contourf'和一个用于绘制箭头的自定义函数绘制的。 (我用的是别人写的package,对所有代码我不是很熟悉)

选择不同的'renderer'有3种情况。

案例1:当我使用

set(gcf,'renderer','painters');

EPS 图不完整,但“清晰”且尺寸较小。如图1(转换为png):

案例2:当我使用

set(gcf,'renderer','opengl');

 do not use any 'renderer'

EPS 图完整但模糊,如图 2:

案例 3:当我使用时

set(gcf,'renderer','zbuffer');

set(findobj(gca,'type','patch'),'alphadatamap','none','facealpha',1); 

EPS 图既不完整又模糊。

“不完整”表示“钟形”之外的部分缺失。

'Blur' 表示这个数字有点锯齿状。

我根据作者的notes(低于 5.k)使用这些“渲染器”。

问题来了:如何让EPS图既完整又清晰?

【问题讨论】:

  • 我还没有解决方案,但问题几乎可以肯定是只有 opengl 渲染器支持透明度(即 alpha ~=1)
  • 是软件问题(Matlab)还是电脑问题?也许我应该尝试其他版本的 Matlab 或在其他机器上运行它...
  • 您是否使用其他查看器打开了 EPS 文件?根据我的经验,不同的观众(有时)以不同的方式显示 eps。确保您在最终生产情况下查看它,即如果它是用于纸质报告,请将其打印在纸上并查看它的外观。
  • 我不确定,但这可能是 opengl 渲染器的问题(来自 mathworks 主页):"OpenGL does not do colormap interpolation. If you create a surface or patch using indexed color and interpolated face or edge coloring, OpenGL interpolates the colors through the RGB color cube instead of through the colormap."
  • 另一件事,我还没有尝试过这个包,但是保存第一次绘制的图像有什么问题吗?一定要用渲染器吗?

标签: matlab eps contourf


【解决方案1】:

正如@RTL 提到的,情况 (1) 和 (3) 的问题在于您使用的是透明补丁(小波分析中的“影响锥”),而 painterszbuffer 支持透明度(zbuffer 在最新版本的 Matlab 中已被删除)。如果您更改任何对象的 alpha 值(透明度),MatLab 将自动切换到 opengl 作为图形渲染器。

现在,至于模糊,您也许可以通过将“GraphicsSmoothing”选项设置为“关闭”来解决这个问题(参见matlab documentation),但此选项仅适用于from 2014b onwards。或者,您可以查看此related question in Stack Overflow

最后,如果你有一个好的矢量编辑程序(比如 Illustrator),你可以从 Matlab 中导出画家渲染的 EPS 文件(PDF 也可以),然后使用外部编辑器制作影响锥半透明(您会在 EPS 中发现轮廓在其后面是完整的)。更少的工作:使用线来描绘影响锥而不是补丁。

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2019-02-28
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多