Почему моя xlabel отрезана на моем участке matplotlib?
Я рисую набор данных, используя matplotlib
, где у меня есть xlabel, который довольно "высокий" (это формула, выраженная в TeX, которая содержит дробь и поэтому имеет эквивалент высоты нескольких строк текста).
В любом случае, нижняя часть формулы всегда обрезается, когда я рисую цифры. Изменение размера фигуры, похоже, не помогает этому, и я не смог понять, как сдвинуть ось "вверх", чтобы освободить место для 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()
в то время как вы можете увидеть всю ярлык, xlabel обрезается внизу.
В случае, если это проблема, связанная с машиной, я запускаю ее на OSX 10.6.8 с помощью matplotlib 1.0.0
Ответы
Ответ 1
Использование:
import matplotlib.pyplot as plt
plt.gcf().subplots_adjust(bottom=0.15)
чтобы освободить место для метки.
Edit:
Так как я дал ответ, matplotlib
добавил функцию tight_layout()
.
Поэтому я предлагаю использовать его:
plt.tight_layout()
должен освободить место для xlabel.
Ответ 2
Легкая опция - настроить matplotlib для автоматической настройки размера графика. Он отлично работает для меня, и я не уверен, почему он не активирован по умолчанию.
Метод 1
Задайте это в файле matplotlibrc
figure.autolayout : True
См. здесь дополнительную информацию о настройке файла matplotlibrc: http://matplotlib.org/users/customizing.html
Метод 2
Обновите rcParams во время выполнения, например
from matplotlib import rcParams
rcParams.update({'figure.autolayout': True})
Преимущество использования этого подхода заключается в том, что ваш код будет создавать одни и те же графики на компьютерах с различной конфигурацией.
Ответ 3
Вы также можете настроить пользовательские дополнения как значения по умолчанию в $HOME/.matplotlib/matplotlib_rc
следующим образом. В приведенном ниже примере я изменил как нижнее, так и левое заполнение из коробки:
# The figure subplot parameters. All dimensions are a fraction of the
# figure width or height
figure.subplot.left : 0.1 #left side of the subplots of the figure
#figure.subplot.right : 0.9
figure.subplot.bottom : 0.15
...