matplotlib: не допустить, чтобы заголовок субплота был шире, чем субплот - PullRequest
1 голос
/ 16 марта 2019

Я создаю сетку изображений, используя plt.subplots.

Как я могу убедиться, что заголовок одного субплота не выходит за пределы ширины изображения под ним?

Другими словами, есть ли способ установить максимальный размер заголовка подзаговора, чтобы не было возможности перекрывать его с соседним заголовком?

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

1 Ответ

2 голосов
/ 16 марта 2019

Вы можете итеративно изменять размер шрифта, пока ширина заголовка не станет меньше осей.Я думаю, что имеет смысл не делать заголовок меньше 1pt (даже если он больше не читается, поэтому не стесняйтесь выбирать другое число).Ниже итерируется с шагом шрифта 1pt;также это может быть адаптировано.

import matplotlib.pyplot as plt


fig, (ax1, ax2) = plt.subplots(ncols=2)
ax1.plot([1,2])
ax1.set_title("Short title")
ax2.plot([2,1])
ax2.set_title("Loooooong title, which exceeds plot axes width.")


def adjust_title(ax):
    title = ax.title
    ax.figure.canvas.draw()
    def _get_t():
        ax_width = ax.get_window_extent().width
        ti_width = title.get_window_extent().width
        return ax_width/ti_width

    while _get_t() <= 1 and title.get_fontsize() > 1:        
        title.set_fontsize(title.get_fontsize()-1)



adjust_title(ax1)
adjust_title(ax2)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...