“matplotlib” 是否有生成 Retina 图形的方法?

3

默认情况下,Python的matplotlib无法生成Retina显示质量的LaTeX文本。是否有设置或添加包可以生成Retina质量的输出?

2个回答

2

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

您可以使用Matplot lib创建SVG图形,其质量更好。

matplotlib.use('svg')

我在文档中找到了一个评论,或许能帮到您:屏幕上的字体看起来很糟糕。您可能正在使用Mac OS,并且旧版本的dvipng在Mac上存在一些问题。请在您的matplotlibrc文件中设置text.dvipnghack: True - Mailerdaimon
这可以帮助确定错误,因为LaTeX应该看起来不错(比普通文本更好),如果所有文本都看起来糟糕,则很有可能您的latex编译器存在问题。否则可能是matplotlib中内联latex的问题。激活所有文本以查看问题可能所在的位置。 - Mailerdaimon
问题似乎出在Mathtex渲染上,你可以尝试将mathtext.fontset设置为cmstix,看看是否有所不同。 - Mailerdaimon
@raxacoricofallapatorius - OSX后端有很多限制,但它是唯一不需要在OSX上安装其他依赖项的交互式后端。你尝试过使用其他交互式后端吗?(我更好奇而已...我不知道其他基于Agg的交互式后端是否在Retina屏幕上有相同的限制。) - Joe Kington
@JoeKington:不,我一直在试图避免这些依赖项(看起来很糟糕)。目前似乎我需要在想要互动性时接受一些限制,然后在想要良好输出时切换到不同的基于文件的后端。或者,我可以通过在SVG查看器中打开文件(一个Web浏览器就行),并在每次更新图形后手动刷新来获得某种贫穷人的互动性。 - orome
显示剩余6条评论

0
如果您查看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 看起来又大又像以前一样不平滑。 - orome
@raxacoricofallapatorius 你确定清除了TeX缓存吗? - tacaswell
是的。所有东西仍然太大了(设置越大,它就越大)。 - orome
1
请参见 https://github.com/matplotlib/matplotlib/issues/1958。看起来这真的是一个OSX问题。 - tacaswell
是的,看起来我需要放弃(暂时)想要实时看到Retina质量输出的想法,并在准备创建具有高分辨率的质量的内容时使用SVG。不过有趣的是问题仅限于* LaTeX *。我期望这是可以(相对)轻松地解决的问题,只需将输出分辨率加倍并调整大小即可。 - orome
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接