Я встроил свои графики в свой блокнот Ipython с помощью "% matplotlib inline."

Вот и появляется сюжет. Однако это очень мало. Есть ли способ сделать его больше, используя настройки записной книжки или настройки графика?

enter image description here

Ответы (10)

Да, поиграйте с размером и dpi вот так (перед тем, как вызывать свой подзаголовок):

fig=plt.figure(figsize=(12,8), dpi= 100, facecolor='w', edgecolor='k')

Как отметили @tacaswell и @Hagne, вы также можете изменить значения по умолчанию, если они не разовые:

plt.rcParams['figure.figsize'] = [12, 8]
plt.rcParams['figure.dpi'] = 100 # 200 e.g. is really fine, but slower

Для настройки размера одной фигуры:

import matplotlib.pyplot as plt

fig=plt.figure(figsize=(15, 15))

Чтобы изменить настройки по умолчанию, а значит и все ваши графики:

import matplotlib.pyplot as plt

plt.rcParams['figure.figsize'] = [15, 15]

Я обнаружил, что % блокнот matplotlib работает для меня лучше, чем встроенный блокнот Jupyter.

Обратите внимание, что вам может потребоваться перезапустить ядро, если раньше вы использовали % matplotlib inline.

Обновление 2019: Если вы используете Jupyter Lab, возможно, вы захотите использовать % виджет matplotlib

Небольшая, но важная деталь для разовой корректировки размера фигуры (как несколько комментаторов выше сообщили, что «у меня это не работает»):

Вы должны сделать plt.figure (figsize = (,)) ДО определения вашего фактического графика. Например:

Это должно правильно определить размер участка в соответствии с указанным вами размером инжира:

values = [1,1,1,2,2,3]
_ = plt.figure(figsize=(10,6))
_ = plt.hist(values,bins=3)
plt.show()

В то время как это покажет график с настройками по умолчанию, как бы «игнорируя» figsize:

values = [1,1,1,2,2,3]
_ = plt.hist(values,bins=3)
_ = plt.figure(figsize=(10,6))
plt.show()

Если вы хотите, чтобы изображение вашей фигуры увеличивалось без изменения общего вида вашей фигуры, увеличьте разрешение фигуры. Изменение размера рисунка, как предлагается в большинстве других ответов, изменит внешний вид, поскольку размеры шрифта не масштабируются соответствующим образом.

import matplotlib.pylab as plt
plt.rcParams['figure.dpi'] = 200

Быстрое решение проблемы «перекрытия графиков» - использовать plt.tight_layout ():

Пример (в моем случае)

for i,var in enumerate(categorical_variables):
    plt.title(var)
    plt.xticks(rotation=45)
    df[var].hist()
    plt.subplot(len(categorical_variables)/2, 2, i+1)

plt.tight_layout()

используя что-то вроде:

import matplotlib.pyplot as plt
%matplotlib inline
plt.subplots(figsize=(18,8 ))
plt.subplot(1,3,1)
plt.subplot(1,3,2)
plt.subplot(1,3,3)

Вывод команды

the output of the command

Размер фигуры по умолчанию (в дюймах) контролируется

matplotlib.rcParams['figure.figsize'] = [width, height]

Например:

import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = [10, 5]

создает фигуру размером 10 (ширина) x 5 (высота) дюймов

The question is about matplotlib, but for the sake of any R users that end up here given the language-agnostic title:

If you're using an R kernel, just use:

options(repr.plot.width=4, repr.plot.height=3)

Возможно масштабирование графика до полной ширины ячейки.

  1. Используйте формат svg вместо растрового изображения при построении в основном линейных диаграмм:
% config InlineBackend.figure_format = 'svg'
  1. Установить ширину графика 100% (вставить в пустую ячейку):
%% html
<стиль>
.output_svg div {
  ширина: 100%! важно;
  высота: 100%! важно;
}

  1. Вы также можете изменить соотношение сторон или другие параметры в соответствии с другими ответами для лучшего понимания.

Он не использует публичный API и может перестать работать в один прекрасный день. screenshot of a full-width matplotlib plot

2022 WebDevInsider