gwpy 包给出错误 - AttributeError:模块“matplotlib.pyplot”在 Google Colab 中没有属性“FigureManagerBase”

Posted

技术标签:

【中文标题】gwpy 包给出错误 - AttributeError:模块“matplotlib.pyplot”在 Google Colab 中没有属性“FigureManagerBase”【英文标题】:gwpy package gives error - AttributeError: module 'matplotlib.pyplot' has no attribute 'FigureManagerBase' in Google Colab 【发布时间】:2021-10-25 13:23:50 【问题描述】:

在 Google Colab gwpy 包中出现错误 -

AttributeError:模块“matplotlib.pyplot”没有属性“FigureManagerBase”

(但是,同样的代码在本地机器上运行良好)。

我已经尝试完全卸载,然后使用以下命令重新安装 gwpy,并重新启动(重置)Colab 的机器。但错误仍然存​​在。

!pip install --upgrade --force-reinstall --no-deps gwpy

# And also the below ones
!pip install gwosc
!pip install dqsegdb2
!pip install ligotimegps

我的代码,使用gwpy 包如下

import pandas as pd
import seaborn as sns
from scipy import signal

from gwpy.timeseries import TimeSeries
from gwpy.plot import Plot
import matplotlib.pyplot as plt
plt.style.use('ggplot')


def get_tseries_from_file(file_name):
  t_data = np.load(file_name)
  tseries1 = TimeSeries(t_data[0,:], sample_rate=2048)
  tseries2 = TimeSeries(t_data[1,:], sample_rate=2048)
  tseries3 = TimeSeries(t_data[2,:], sample_rate=2048)
  return tseries1, tseries2, tseries3

def plot_tseries(t1, t2, t3):
  plot = Plot(t1, t2, t3, separate=True, sharex=True, figsize=[20, 12])
  ax = plot.gca()
  ax.set_xlim(0, 2)
  ax.set_xlabel('Time [s]')
  plt.show()
  
file_1 = root_dir + 'train/0/0/0/000a5b6e5c.npy'
  
tseries1, tseries2, tseries3 = get_tseries_from_file(file_1)

# Plotting the 3 TimeSeries
plot_tseries(tseries1, tseries2, tseries3)

并收到来自../gwpy/plot/plot.py 的以下错误

“模块‘matplotlib.pyplot’没有属性‘FigureManagerBase’”

raceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/gwpy/plot/plot.py in _init_figure(self, **kwargs)
    131         try:
--> 132             manager = backend_mod.new_figure_manager_given_figure(num, self)
    133         except AttributeError:

AttributeError: module 'ipykernel.pylab.backend_inline' has no attribute 'new_figure_manager_given_figure'

During handling of the above exception, another exception occurred:

AttributeError                            Traceback (most recent call last)
3 frames
/usr/local/lib/python3.7/dist-packages/gwpy/plot/plot.py in _init_figure(self, **kwargs)
    135                 pyplot.new_figure_manager.__module__)
    136             canvas = upstream_mod.FigureCanvasBase(self)
--> 137             manager = upstream_mod.FigureManagerBase(canvas, 1)
    138         manager._cidgcf = manager.canvas.mpl_connect(
    139             'button_press_event',

AttributeError: module 'matplotlib.pyplot' has no attribute 'FigureManagerBase'

附加信息

print(matplotlib.get_backend()) # module://ipykernel.pylab.backend_inline
print(matplotlib.__version__) # 3.4.3
print(gwpy.__version__) # 2.0.4

【问题讨论】:

【参考方案1】:

问题根源

在 matplotlib 3.2.2 中

import matplotlib.pyplot as plt
pyplot.new_figure_manager.__module__

收益:matplotlib.backend_bases

在 matplotlib 3.4.3 中,它产生:matplotlib.pyplot

这很糟糕:

临时解决方法

正如Tracking issue of gwpy 中所建议的那样——

目前在 Colab 中的临时解决方法是使用早期版本的 matplotlib-

!pip install matplotlib==3.2.2

3.2.2 可以正常工作。

【讨论】:

以上是关于gwpy 包给出错误 - AttributeError:模块“matplotlib.pyplot”在 Google Colab 中没有属性“FigureManagerBase”的主要内容,如果未能解决你的问题,请参考以下文章

Python 路谱

NumPy 包给出了一个 array() 错误如何解决这个问题? [关闭]

更改包名称应用程序后给出错误“java.lang.NullPointerException:尝试获取空数组的长度”[duplicate]

创建具有自动增量的表

在标准输入上使用相对导入的Python 3脚本给出错误:没有名为'__main__.XXX'的模块; '__main__'不是包

Azure DevOps Artifact Feed 在 Visual Studio 中给出 500 错误