41

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

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

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

我试图像其他 SO 帖子中所说的那样提高分辨率,这更好,但细节不够精确。到目前为止,这是我的结果:

  • 完整结果

满的

  • 使用 matplotlib 进行缩放

飞涨

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

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

4

2 回答 2

43

在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', ...)
于 2012-08-30T15:40:09.243 回答
25

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

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。

于 2012-08-31T09:51:54.463 回答