0
votes

In Google Colab gwpy package giving error -

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

(However, this same code is running all good in local machine ).

I already tried doing full uninstallation and then reinstalled gwpy fresh with below commands and restarted (reset) the Colab's Machine. But error persists.

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

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

My Code, that uses the gwpy package is as below

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)

And getting the following error coming from ../gwpy/plot/plot.py

"module 'matplotlib.pyplot' has no attribute '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'

Additional Info

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

1 Answers

0
votes

Source of Problem

In matplotlib 3.2.2

import matplotlib.pyplot as plt
pyplot.new_figure_manager.__module__

yields: matplotlib.backend_bases

In matplotlib 3.4.3 it yields: matplotlib.pyplot

This is breaking:

Temporary workaround

As suggested in the Tracking issue of gwpy -

The temporary workaround for now in Colab is to use an earlier version of matplotlib-

!pip install matplotlib==3.2.2

With 3.2.2 it works fine.