【问题标题】:Octave failing to include parts of a plot when saved to fileOctave 保存到文件时未能包含绘图的部分内容
【发布时间】:2016-09-30 05:22:34
【问题描述】:

我有一个非常基本的自定义箱线图功能:

function myboxplot(LPercentile, Median, RPercentile, Height, LineWidth, BoxHeight, MarkerColour, MarkerSize)
  hold on
  plot([LPercentile, RPercentile], [Height, Height], 'linewidth', LineWidth, 'color', 'k', 'linestyle', '-');
  plot([LPercentile, LPercentile], [Height - BoxHeight/2, Height + BoxHeight/2], 'linewidth', LineWidth,  'color', 'k', 'linestyle', '-');
  plot([RPercentile, RPercentile], [Height - BoxHeight/2, Height + BoxHeight/2], 'linewidth', LineWidth,  'color', 'k', 'linestyle', '-');  
  plot(Median, Height, 'marker', 'o', 'markersize', MarkerSize, 'markeredgecolor', 'k', 'markerfacecolor', MarkerColour);    
  hold off
end

当我按预期使用它时,

>> myboxplot(1,2,3,1,3,1,'g',20); hold on
>> myboxplot(2,3,5,3,3,1,'r',20); hold off
>> axis([0,6,0,4]);

它会在我的 octave 会话中产生预期的结果:

                                              

但是当我尝试保存到文件时:

>> saveas(gcf,'out.pdf','pdf');

惨败:

                                               

无论输出格式如何(至少在 pdf 和 png 之间),都会发生这种情况。
这是一个错误吗?是否有使线条可见的解决方法?
(注:我在matlab中也试过这段代码,matlab按预期保存文件)


(使用: GNU Octave 版本:4.0.3 GNU Octave 许可证:GNU 通用公共许可证 操作系统:Linux 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64)
更新: Windows 上的 Octave 4.0.3 产生正确的输出,所以这绝对是 linux 上的一个 "bug" 错误。我将在 octave 跟踪器上提交一个错误,但如果有人在此期间知道任何解决方法,我将非常感激。

【问题讨论】:

  • 谢谢,安迪!我假设因为它适用于我的 Windows 安装,它可能与 linux 上的一个库有关。也许与openGL相关。 'fltk' 给了我同样的问题。 'gnuplot' 工具包有效(但它不尊重我的手动放置,它看起来不太好)。我也会在我的笔记本电脑上测试它,它有不同的 linux 发行版,看看我得到了什么......
  • Mint 18 没有变化(= ubuntu 16.04)
  • 所以看起来这个错误已经默认修复了。您可以在 GNU/Linux 上试用 4.2 候选版本 2 吗?顺便说一句,如果您想调试绘图问题,请使用“eps”作为输出,因为它是用于 OpenGL 工具包的中间格式。
  • 刚刚安装了 4.2.0-rc2 标记的版本,问题仍然存在。 (虽然 rc2 看起来很不错 :) )然后我会在跟踪器上提交一个错误。谢谢,安迪。 (PS 我在追踪器的基本搜索中没有发现类似的错误......)
  • bug #49225提交

标签: octave


【解决方案1】:

这确实是一个真正的错误,它与 octave 用于将 openGL 图形转换为 postscript 的库之一有关,而不是 octave 基础本身,根据 octave bug submission (bug #49225)

来自现已关闭的错误报告:

“此错误已在最新版本的 gl2ps (1.3.9) 中修复,但 linux mint 17.3 附带 gl2ps 1.3.8。在 linux 上,解决方法是编译您自己的 gl2ps 版本。”

我可以确认安装 libgl2ps1 (1.3.9-4)libgl2ps-dev (1.3.9-4) 并重新编译 octave 解决了这个错误。

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多