使用matplotlib的tight_layout()时出现ValueError错误。

13

好的,这是我第一次在这里提问,请耐心等待;-)

我正在尝试使用 matplotlib 创建一个带有两个 y 轴的子图系列,并保存该图。我正在使用 GridSpec 来为子图创建网格,并意识到它们有点重叠,这不是我想要的。因此,我尝试使用 tight_layout() 来解决这个问题,根据 matplotlib 文档的说法应该可以完美解决。简化一下,我的代码大致如下:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure(num=None, facecolor='w', edgecolor='k')
grid = gridspec.GridSpec(2, numRows) 
# numRows comes from the number of subplots required

# then I loop over all the data files I'm importing and create a subplot with two y-axes each time
  ax1 = fig.add_subplot(grid[column, row])
  # now I do all sorts of stuff with ax1...
  ax2 = ax1.twinx()
  # again doing some stuff here

当数据处理循环完成并且我创建了所有子图后,最终结果如下:

fig.tight_layout()
fig.savefig(str(location))

就我所知,这应该可以工作,但是当调用tight_layout()时,我从函数self.subplotpars得到一个ValueError: left不能>= right。我的问题是:如何找出导致此错误的原因并如何修复它?


请提供完整的回溯信息和可运行的代码示例,以便我们能够重现问题。 - tacaswell
我对你的问题有点困惑。你能否提供一个运行中的代码示例?这样我就能更清楚地了解你实际想要什么,以及可能出现的问题所在。 - The Dude
1个回答

7

我曾经也遇到过这个错误,并有一个解决方案可以解决。但我不确定它是否适用于您。在matplotlib中,命令

plt.fig.subplots_adjust() 

可以用来拉伸图形。左边和底边随着数字越小而拉伸得更多,而顶部和右边随着数字越大而拉伸得更多。因此,如果左边大于或等于右边,或者底部大于或等于顶部,则图表会翻转。我将我的命令调整为以下内容:

fig = plt.figure()
fig.subplots_adjust(bottom = 0)
fig.subplots_adjust(top = 1)
fig.subplots_adjust(right = 1)
fig.subplots_adjust(left = 0)

然后,只要您保持左边和底部更小,就可以填入自己的数字来调整它。希望这样能解决您的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接