Как я могу сохранить постоянный размер фигуры с помощью matplotlib, хотя и использую pyplot.show ()? - PullRequest
3 голосов
/ 09 марта 2011

Посмотрите на следующий пример Python:

import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['figure.figsize'] = [8.27, 11.69]
fig = plt.figure()
plt.show() # This line causes problems with figsize
fig.savefig('test.pdf')

Если я использую "plt.show ()", размер фигуры test.pdf сильно изменится (с

)
  • 210 x 297 [мм] до
  • 213 x 250 [мм]

Что мне нужно сделать, чтобы сохранить его постоянным?

1 Ответ

6 голосов
/ 09 марта 2011

На сайте SciPy есть хорошая демонстрация по настройке размера изображения в рисунках matplotlib.

Эффект show() на размер фигуры будет зависеть от того, какой бэкэнд matplotlib используется. Например, когда я использовал бэкэнд TkAgg (по умолчанию в моей системе), он добавил около 12 пикселей к ширине и высоте фигуры. Но когда я переключился на бэкэнд WXAgg, размер фигуры фактически уменьшился.

Кроме того, ручное изменение размера окна, отображаемого с помощью show(), также изменит размер фигуры. Более того, если для отображения рисунка потребуется слишком большое окно для экрана, размер окна будет уменьшен, а размер рисунка уменьшен соответственно.

В любом случае, вам лучше всего будет сбросить размер фигуры перед рендерингом в pdf. I.e.:

fig.set_size_inches(8.27, 11.69)
fig.savefig('test.pdf')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...