如何使用matplotlib紧配图?

Kat*_*tya 40 python matplotlib figure

我找到了pyplot的tight_layout函数,并希望使用它.在我的应用程序中,我将matplotlib图嵌入到Qt GUI中并使用数字而不是pyplot.有什么办法可以在那里申请tight_layout吗?如果我在一个图中有多个轴,它也会工作吗?

Joe*_*ton 67

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

QtAgg后端和默认后端之间应该没有区别(或者如果有,则是一个错误).

例如

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()
Run Code Online (Sandbox Code Playgroud)

在严格布局之前

在此输入图像描述

严格布局后

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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @shootingstars - 这可能是因为你制作的轴不是一个子图.所有`tight_layout`都是为`subplots_adjust`计算参数,所以`tight_layout`只适用于子图.使用`fig,ax = plt.subplots()`或`ax = fig.add_subplot(1,1,1)`而不是手动指定轴的范围,它应该工作正常.(顺便说一句,较新版本的matplotlib在这种情况下会给出更多信息.) (3认同)