有没有办法使用“matplotlib”生成视网膜图?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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问题

以上是关于有没有办法使用“matplotlib”生成视网膜图?的主要内容,如果未能解决你的问题,请参考以下文章

热图与 matplotlib 使用 matshow

Matplotlib 中的内联标签

有没有办法改变 MatplotLib 中 sublopts 的大小?

有没有办法在 matplotlib 中标记多个 3d 表面?

Xcode 资产目录 - 有没有办法只为 iPad 非视网膜标记精灵?

matplotlib 条形图黑色 - 如何删除条形边框