Matplotlib subplots_adjust hspace, чтобы заголовки и xlabels не перекрывались?

С, скажем, 3 строками подзадач в matplotlib, xlabels одной строки могут перекрывать заголовок следующего. Нужно возиться с pl.subplots_adjust(hspace) , что раздражает.

Есть ли рецепт для hspace который предотвращает дублирование и работает для любого nrow?

  • Центрирование меток x-tick между отметками в matplotlib
  • Растрирование нескольких элементов в matplotlib
  • Создание графика с датой и временем в осях с меткой matplotlib
  • Как показать метку шейп-файла в легенде базовой карты python?
  • Как построить линии сначала, а точки - последними в matplotlib
  • Matplotlib - рисунок гладкого круга в полярном сюжете
  •  """ matplotlib xlabels overlap titles ? """ import sys import numpy as np import pylab as pl nrow = 3 hspace = .4 # of plot height, titles and xlabels both fall within this ?? exec "\n".join( sys.argv[1:] ) # nrow= ... y = np.arange(10) pl.subplots_adjust( hspace=hspace ) for jrow in range( 1, nrow+1 ): pl.subplot( nrow, 1, jrow ) pl.plot( y**jrow ) pl.title( 5 * ("title %d " % jrow) ) pl.xlabel( 5 * ("xlabel %d " % jrow) ) pl.show() 

    Мои версии:

    • matplotlib 0.99.1.1,
    • Python 2.6.4,
    • Mac OSX 10.4.11,
    • backend: Qt4Agg ( TkAgg => Исключение в Qt4Agg TkAgg Tkinter)

    (Для многих дополнительных точек, может ли кто-нибудь описать, как пакер / спейсер matplotlib работает по строкам главы 17 «упаковщик» в книге Tcl / Tk?)

  • Анализ файла сценария CS: GO в Python
  • Python: Отключить последнее слово предложения?
  • Механизировать и BeautifulSoup для PHP?
  • Смутно с списками python: они или не являются итераторами?
  • Регулярное выражение для обнаружения замкнутых циклов C ++ для циклов while и while
  • Как обнаружить недостающие поля в файле CSV на Pythonic?
  • 3 Solutions collect form web for “Matplotlib subplots_adjust hspace, чтобы заголовки и xlabels не перекрывались?”

    Я считаю это довольно сложным, но есть некоторые сведения об этом здесь, в FAQ MatPlotLib . Это довольно громоздко и требует узнать, какое пространство занимают отдельные элементы (ticklabels) …

    Обновление. На странице указано, что tight_layout() – это самый простой способ, который пытается автоматически исправить интервал.

    В противном случае он показывает способы получения размеров различных элементов (например, этикеток), чтобы вы могли затем исправить интервалы / позиции ваших элементов осей. Ниже приведен пример на странице часто задаваемых вопросов, которая определяет ширину очень широкой метки оси Y и соответственно регулирует ширину оси:

     import matplotlib.pyplot as plt import matplotlib.transforms as mtransforms fig = plt.figure() ax = fig.add_subplot(111) ax.plot(range(10)) ax.set_yticks((2,5,7)) labels = ax.set_yticklabels(('really, really, really', 'long', 'labels')) def on_draw(event): bboxes = [] for label in labels: bbox = label.get_window_extent() # the figure transform goes from relative coords->pixels and we # want the inverse of that bboxi = bbox.inverse_transformed(fig.transFigure) bboxes.append(bboxi) # this is the bbox that bounds all the bboxes, again in relative # figure coords bbox = mtransforms.Bbox.union(bboxes) if fig.subplotpars.left < bbox.width: # we need to move it over fig.subplots_adjust(left=1.1*bbox.width) # pad a little fig.canvas.draw() return False fig.canvas.mpl_connect('draw_event', on_draw) plt.show() 

    Вы можете использовать plt.subplots_adjust, чтобы изменить интервал между подзаголовками Link

     subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None) left = 0.125 # the left side of the subplots of the figure right = 0.9 # the right side of the subplots of the figure bottom = 0.1 # the bottom of the subplots of the figure top = 0.9 # the top of the subplots of the figure wspace = 0.2 # the amount of width reserved for blank space between subplots hspace = 0.2 # the amount of height reserved for white space between subplots 

    Ссылка, опубликованная Хосе, обновлена, и теперь pylab имеет функцию tight_layout() которая делает это автоматически (в matplotlib версии 1.1.0).

    http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.tight_layout

    http://matplotlib.org/users/tight_layout_guide.html#plotting-guide-tight-layout

    Python - лучший язык программирования в мире.