Я строю набор данных, используя matplotlib
строю где у меня достаточно «высокий» xlabel (это формула, представленная в TeX, которая содержит дробь и, следовательно, имеет высотный эквивалент нескольких строк текста).
В любом случае, нижняя часть формулы всегда обрезается, когда я рисую фигуры. Изменение размера фигуры, кажется, не помогает этому, и я не смог понять, как сдвинуть ось X вверх, чтобы освободить место для xlabel. Нечто подобное было бы разумным временным решением, но было бы неплохо иметь способ, позволяющий matplotlib автоматически распознавать, что метка обрезается, и соответственно изменяет размер.
Вот пример того, что я имею в виду:
import matplotlib.pyplot as plt
plt.figure()
plt.ylabel(r'$\ln\left(\frac{x_a-x_b}{x_a-x_c}\right)$')
plt.xlabel(r'$\ln\left(\frac{x_a-x_d}{x_a-x_e}\right)$')
plt.show()
в то время как вы можете видеть весь ylabel, xlabel отсекается внизу.
В случае, если это проблема конкретной машины, я запускаю это на OSX 10.6.8 с matplotlib 1.0.0
источник
plt.savefig("test.png",bbox_inches='tight')
: stackoverflow.com/questions/21288062/…Ответы:
Использование:
освободить место для этикетки.
Редактировать:
Так как я дал ответ,
matplotlib
добавилtight_layout()
функцию. Поэтому я предлагаю использовать его:должен освободить место для xlabel.
источник
gcf().subplots_adjust
а неplt.subplots_adjust
? Есть ли разница?gcf
иgca
? Вы забыли объяснить!tight_layout()
исправил отсечение xlabels, это, к сожалению, привело к тому, что мой ylabel обрезался (что раньше не было обрезано). Тем не менее, первое лекарство (subplots_adjust(bottom=0.25)
) работало хорошо. Спасибо.gcf()
иgca()
«получить текущую фигуру» и «получить текущую ось», соответственно.Простой вариант - настроить matplotlib для автоматической настройки размера графика. Он отлично работает для меня, и я не уверен, почему он не активирован по умолчанию.
Способ 1
Установите это в вашем файле matplotlibrc
Смотрите здесь для получения дополнительной информации о настройке файла matplotlibrc: http://matplotlib.org/users/customizing.html
Способ 2
Обновите rcParams во время выполнения, как это
Преимущество использования этого подхода заключается в том, что ваш код будет отображать одни и те же графики на машинах с различной конфигурацией.
источник
Если вы хотите сохранить его в файл, вы решаете его с помощью
bbox_inches="tight"
аргумента:источник
Положив
plot.tight_layout()
после всех изменений на графике, только доshow()
илиsavefig()
решит проблему.источник
plt.autoscale()
работал на меня.источник
Вы также можете установить пользовательские отступы по умолчанию в вашем,
$HOME/.matplotlib/matplotlib_rc
как показано ниже. В приведенном ниже примере я изменил как нижний, так и левый готовый отступ:источник