Подтвердить что ты не робот

Matplotlib - увеличить разрешение для просмотра деталей

У меня есть большой процесс, состоящий из задач (около 600), и я создал фигуру, чтобы посмотреть порядок, с которым они запускаются, и время, которое они берут. Для этого я использовал matplotlib и barh.

Рисунок в порядке (мой первый matplotlib успех!), но:

  • Я хотел бы увидеть детали и увеличить изображение при экспорте (например, PNG), поскольку опция масштабирования позволяет, когда matplotlib отображает результат с помощью команды show()
  • легенды оси Y слишком близки и нечитабельны

Я попытался увеличить разрешение, как сказано в этом другом сообщении SO, это лучше, но детали недостаточно точны. Вот мои результаты:

  • полный результат

full

  • масштабирование с помощью matplotlib

zoom

Знаете ли вы, как я мог улучшить читаемость? Большое спасибо (еще, все мои усилия были бы бесполезны, я боюсь...)

PS: Я использую matplotlib 1.1.1 и python 2.7.

4b9b3361

Ответ 1

Просто для записи, я сделаю это предложение в своем втором комментарии здесь как возможный ответ. Это может не всегда работать, но тест показывает хорошие результаты:

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.

Ответ 2

Мне удалось это сделать, в 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', ...)