模块'matplotlib.pyplot'没有属性'tight_layout'

时间:2018-02-12 18:34:42

标签: python matplotlib plot

由于某种原因,来自pyplot的tight_layout()函数停止在机器上工作。几个月来我一直在我的一个程序中使用它,它决定停止工作(我意识到我可能在某处造成了意外的改变,但是我不知道它会在哪里)。任何其他matplotlib或pyplot函数都可以正常工作,但每当我调用tight_layout时,我都会得到

module 'matplotlib.pyplot' has no attribute 'tight_layout'

显然不是这样。

例如,即使此代码来自官方的tight_layout指南(https://matplotlib.org/users/tight_layout_guide.html

from matplotlib import pyplot as plt

plt.rcParams['savefig.facecolor'] = "0.8"

def example_plot(ax, fontsize=12):
     ax.plot([1, 2])
     ax.locator_params(nbins=3)
 ax.set_xlabel('x-label', fontsize=fontsize)
 ax.set_ylabel('y-label', fontsize=fontsize)
 ax.set_title('Title', fontsize=fontsize)

plt.close('all')
fig, ax = plt.subplots()
example_plot(ax, fontsize=24)
plt.tight_layout()

会产生错误。

我重新安装了matplotlib软件包几次并重新安装了我的IDE(Spyder)无济于事。我在这一点上非常无能,所以任何输入都会很棒。

1 个答案:

答案 0 :(得分:2)

我不认为某些模块会突然失去其方法。您可以检查代码中的方法,

import matplotlib.pyplot as plt
with open(plt.__file__[:-1],"r") as f:
    for line in f:
        if "tight_layout" in line:
            print(line)

这会导致打印两行。

def tight_layout(pad=1.08, h_pad=None, w_pad=None, rect=None):
# and 
fig.tight_layout(pad=pad, h_pad=h_pad, w_pad=w_pad, rect=rect)

如果不是这种情况,请检查文件上次更改的时间

import os
from datetime import datetime

f = datetime.fromtimestamp(os.path.getmtime(plt.__file__[:-1]))
print("Modification time: {}".format(f))

并与您采取的任何操作,安装,卸载,修改代码等进行比较。