我正在使用创建图像网格plt.subplots。
如何确保一个子图的标题不会超出其下方图像的宽度?
换句话说,有没有办法设置子图标题的最大尺寸,使其不可能与相邻标题重叠?
如果标题超出了下图,我想减小它的字体大小,这样它就不会超出。
您可以迭代地更改字体大小,直到标题宽度小于轴。我想不让标题小于 1pt 是有意义的(即使它不再可读,所以可以随意选择不同的数字)。下面以 1pt 的 fontsize 步长进行迭代;这也可以进行调整。
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()
Run Code Online (Sandbox Code Playgroud)