matplotlib - 增加分辨率以查看详细信息

时间:2012-08-30 08:18:02

标签: python matplotlib

我有一个由任务组成的大型进程(大约600个),我创建了一个数字来观察它们的启动顺序和时间。为此,我使用了matplotlib和一个barh。

这个数字还可以(我的第一个matplotlib成功!),但是:

  • 我希望在导出时看到细节并放大图片(例如PNG),因为当matplotlib使用show()命令显示结果时,缩放选项允许
  • Y轴的图例太近且不可读

我试图像this other SO post中所说的那样提高分辨率,这样更好,但细节不够准确。以下是我到目前为止的结果:

  • 完整结果

full

  • 使用matplotlib缩放

zoom

你知道我如何提高可读性吗?非常感谢(否则,我的所有努力都将毫无用处,我担心......)

PS:我正在使用matplotlib 1.1.1和python 2.7。

2 个答案:

答案 0 :(得分:39)

我设法按照Evert的建议,通过使用非常小的字体的非常大的分辨率。以下是最重要的步骤:

import pylab as pl
pl.figure(figsize=(70, 70)) # This increases resolution
pl.savefig('test.eps', format='eps', dpi=900) # This does, too
pl.annotate(..., fontsize='xx-small', ...)

答案 1 :(得分:21)

仅作为记录,我将把我在第二条评论中提出的建议作为可能的答案。这可能并不总是有效,但测试显示了良好的结果:

import pylab as pl
pl.figure(figsize=(7, 7))  # Don't create a humongous figure
pl.annotate(..., fontsize=1, ...)   # probably need the annotate line *before* savefig
pl.savefig('test.pdf', format='pdf')   # no need for DPI setting, assuming the fonts and figures are all vector based

即使是小数字体(例如fontsize=0.1)也可以使用。 您的里程可能会有所不同:我仅使用PDF后端测试了这一点,而不是EPS后端。

另外:我遗漏了DPI设置。在高分辨率打印机上打印时,可能再次需要它。然后,您不应该,因为这可能是打印机设置:打印机如何光栅化(矢量)PDF图像。我根本不知道这些“提示”是否可以编码为postscript / PDF。