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

未关闭
#24 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
jupyter, matplotlib, python

调研方向

从 matplotlib_inline/backend_inline.py 第 100 行开始,这里 matplotlib.pyplot.close('all') 会引发报告中的 AttributeError。使用所示的 notebook 用法重现该失败,并将其与显式导入 matplotlib.pyplot 进行比较;当按描述使用 backend 时 inline 清理不再失败,即表示完成。

由索引模型根据 Issue 内容生成。

描述

While attempting to create a piano roll with librosa and matplotlib, like this:

def plot_piano_roll(pm, start_pitch, end_pitch, fs=100):
    # Use librosa's specshow function for displaying the piano roll
    librosa.display.specshow(pm.get_piano_roll(fs)[start_pitch:end_pitch],
                             hop_length=1, sr=fs, x_axis='time', y_axis='cqt_note',
                             fmin=pretty_midi.note_number_to_hz(start_pitch))

plt.figure(figsize=(8, 4))
plot_piano_roll(pm, 56, 70)

I encounter this error:

AttributeError                            Traceback (most recent call last)
File ~/anaconda3/lib/python3.9/site-packages/matplotlib_inline/backend_inline.py:100, in show(close, block)
     97 # only call close('all') if any to close
     98 # close triggers gc.collect, which can be slow
     99 if close and Gcf.get_all_fig_managers():
--> 100     matplotlib.pyplot.close('all')

File ~/anaconda3/lib/python3.9/site-packages/matplotlib/_api/__init__.py:226, in caching_module_getattr.<locals>.__getattr__(name)
    224 if name in props:
    225     return props[name].__get__(instance)
--> 226 raise AttributeError(
    227     f"module {cls.__module__!r} has no attribute {name!r}")

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

The error seems to be fixed if I explicitly declare import matplotlib.pyplot as plt at the start of the file and then use that to call it like this: plt.close('all'). If that alone is satisfactory, I would request to do a PR.

主要语言
Jupyter Notebook
星标
31
派生
39
PR 合并指标
30 天内没有已合并 PR

贡献指南

这个仓库没有索引到贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ipython/matplotlib-inline 的其他 Issue

查看 ipython/matplotlib-inline 的全部 Issue

相似的 Issue

更多 Backend & API Design Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。