如何使用 matplotlib 与图紧密布局?

我为 pyplot 找到了 tight_layout函数,并想使用它。在我的应用程序中,我将 matplotlib 绘图嵌入到 Qt GUI 中,并使用了 figure 而不是 pyplot。有什么办法可以在那里应用 tight_layout吗?如果我在一个图形中有几个轴,它也会工作吗?

174980 次浏览

像平常一样调用 fig.tight_layout()。(pyplot只是一个方便的包装器。在大多数情况下,您只能使用它来快速生成图形和轴对象,然后直接调用它们的方法。)

QtAgg后端和默认后端之间不应该有区别(如果有的话,那就是 bug)。

例如。

import matplotlib.pyplot as plt


#-- In your case, you'd do something more like:
# from matplotlib.figure import Figure
# fig = Figure()
#-- ...but we want to use it interactive for a quick example, so
#--    we'll do it this way
fig, axes = plt.subplots(nrows=4, ncols=4)


for i, ax in enumerate(axes.flat, start=1):
ax.set_title('Test Axes {}'.format(i))
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')


plt.show()

紧密布局之前

enter image description here

紧凑排版之后

import matplotlib.pyplot as plt


fig, axes = plt.subplots(nrows=4, ncols=4)


for i, ax in enumerate(axes.flat, start=1):
ax.set_title('Test Axes {}'.format(i))
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')


fig.tight_layout()


plt.show()

enter image description here