模块“matplotlib.pyplot”没有属性“tight_layout”

cyej8jka  于 2023-04-06  发布在  其他
关注(0)|答案(2)|浏览(159)

由于某种原因,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)没有用。我在这一点上很无知,所以任何输入都是很好的。

yk9xbfzb

yk9xbfzb1#

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

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))

并与您执行的任何操作(安装、卸载、修改代码等)进行比较。

4sup72z8

4sup72z82#

当你试图导入Matplotlib并像函数一样使用tight_layout时,会发生这个错误。所以你可以通过将import Matplotlib as plt修改为import Matplotlib.pyplot as plt来修复这个错误。

相关问题