【问题标题】:Is there a way to generate Retina graphs using 'matplotlib'?有没有办法使用“matplotlib”生成视网膜图?
【发布时间】:2013-12-10 04:39:41
【问题描述】:

Python 的matplotlib 默认不生成 Retina 显示质量 LaTeX 文本。是否有生成 Retina 质量输出的设置或附加包?

【问题讨论】:

    标签: python matplotlib retina-display


    【解决方案1】:

    您是否使用'Agg' 模式(标准)来创建PNG 图形?

    您可以使用 Matplot 库创建 SVG 图形,使用它具有更好的质量

    matplotlib.use('svg')
    

    【讨论】:

    • 那个后端会创建一个图像文件,对吧(我不确定)?我正在寻找适用于“MacOSX”的东西(使用ipython --pylab 启动)。
    • 我猜答案将是我运气不好:我需要用不好看的 LaTeX 交互地制作图形原型,然后切换到'svg' 后端保存更高质量的文件以供使用。但我真正想要的是交互模式下的高质量(使用“MacOSX”后端。
    • 我在文档中找到了一条评论,也许它有帮助:字体在屏幕上看起来很糟糕。您可能正在运行 Mac OS,并且在 mac 上使用旧版本的 dvipng 有一些有趣的事情。在你的 matplotlibrc 文件中设置text.dvipnghack : True
    • 更改 text.dvipnghack 似乎没有任何作用。请注意,字体通常看起来不错,只是 LaTeX 没有,因为它似乎被渲染为位图(该分辨率是在 Retina 上看起来不错的一半)。
    • 是的,这就是我发布dvipnghack 的原因。这应该可以修复难看的文本。如果它仍然不起作用,我不知道还能做什么......您可以尝试将 LaTeX 设置为默认文本渲染器(text.usetex : True),看看这是否会影响正常的文本。 (我想是的..)也许检查您的 Tex 安装是否是最新的。
    【解决方案2】:

    如果您查看texmanager.py,您会发现它通过调用dvipng 来生成png,并且系统调用dvipng 的函数具有dpi 的参数

    在现有数字的每个数字基础上获得更高的分辨率TeX

    plt.gcf().canvas.renderer.dpi = what_ever_retina_dpi_is
    

    要在任何地方设置它,您应该能够设置 rcparam figure.dpi,这将在创建新渲染器时受到尊重。

    我无法对此进行测试,因为我无法使用配备 Retina 显示屏的 Mac。

    【讨论】:

    • 这只会增加所有文本的大小(不仅仅是 LaTeX,还包括已经看起来不错的文本)。所以非 LaTeX 看起来又大又细,而 LaTeX 看起来又大又像以前一样参差不齐。
    • @raxacoricofallapatorius 你确定你清除了tex缓存吗?
    • 应该位于~/.matplotlib/tex.cache
    • 是的。一切仍然太大(设置越大,它就越大)。
    • github.com/matplotlib/matplotlib/issues/1958 看来这确实是一个osx问题
    猜你喜欢
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2013-01-26
    • 2012-03-29
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多