我发现pyplot中有一个tight_layout
函数,想要使用它。在我的应用程序中,我将matplotlib图表嵌入到Qt GUI中,并使用figure而不是pyplot。是否有任何方法可以在那里应用tight_layout
?如果我在一个figure中有多个轴,它是否也有效?
我发现pyplot中有一个tight_layout
函数,想要使用它。在我的应用程序中,我将matplotlib图表嵌入到Qt GUI中,并使用figure而不是pyplot。是否有任何方法可以在那里应用tight_layout
?如果我在一个figure中有多个轴,它是否也有效?
只需像平常一样调用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()
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()
pyplot.figure()
ax
对象的mpl_toolkits.basemap
一起使用时,出现了ValueError: max() arg is an empty sequence
。这是一个错误还是使用这个和basemap
一起存在的限制? - ryanjdillontight_layout
只是计算 subplots_adjust
的参数,所以它只适用于子图。请改用 fig, ax = plt.subplots()
或 ax = fig.add_subplot(1,1,1)
来代替手动指定轴的范围,这样应该就能正常工作。(顺便说一句,新版本的 matplotlib 在这种情况下会给出更具信息性的错误提示。) - Joe Kingtonmatplotlib
和basemap
,因为我遇到了各种问题,这只是另一个更新的原因。 - ryanjdillonfig = Figure()
建议会导致tight_layout
引发ValueError
,除非以其他方式实例化轴。subplots
是创建轴和图形实例的正确方法。 - hobs