%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'
Posted
技术标签:
【中文标题】%Matplotlib - AttributeError: \'NoneType\' 对象没有属性 \'lower\'【英文标题】:%Matplotlib - AttributeError: 'NoneType' object has no attribute 'lower'%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower' 【发布时间】:2019-12-04 10:58:54 【问题描述】:我在 IPython 中运行 %matplotlib,但是有一个 AttributeError: 'NoneType' 对象没有属性 'lower'
Python 3.7; MacOs Mojave 10.14.6 (18G84); conda matplotlib: 3.1.1 pypi_0 pypi
In [13]: import matplotlib
In [14]: import matplotlib.pyplot as plt
In [15]: %matplotlib
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-15-a49a4afc47c5> in <module>
----> 1 get_ipython().run_line_magic('matplotlib', '')
//anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
2311 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2312 with self.builtin_trap:
-> 2313 result = fn(*args, **kwargs)
2314 return result
2315
<//anaconda3/lib/python3.7/site-packages/decorator.py:decorator-gen-108> in matplotlib(self, line)
//anaconda3/lib/python3.7/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
185 # but it's overkill for just that one bit of state.
186 def magic_deco(arg):
--> 187 call = lambda f, *a, **k: f(*a, **k)
188
189 if callable(arg):
//anaconda3/lib/python3.7/site-packages/IPython/core/magics/pylab.py in matplotlib(self, line)
97 print("Available matplotlib backends: %s" % backends_list)
98 else:
---> 99 gui, backend = self.shell.enable_matplotlib(args.gui.lower())
100 self._show_matplotlib_backend(args.gui, backend)
101
AttributeError: 'NoneType' object has no attribute 'lower'
【问题讨论】:
Purpose of "%matplotlib inline"的可能重复 不要只使用%matplotlib
。使用%matplotlib inline
但是,在(控制台)IPython 笔记本中,您可能更愿意不使用“%matplotlib”魔术命令。
我也遇到了同样的问题。 %matplotlib
本身在 ipython shell 中通常会使图形自动弹出,并使它们具有交互性等。它与嵌入图形的 %matplotlib inline
具有不同的目的(这不是我想要的)。您可以通过运行plt.ion()
并选择合适的后端来获得一些类似的行为。不知道为什么 %matplotlib
命令在某些安装中不起作用。
【参考方案1】:
在 Jupyter Lab 中出现类似的错误消息。通过放置后端魔法为我解决了
%matplotlib inline
在实际进行绘图的单元格中。
【讨论】:
【参考方案2】:根据the docs%matplotlib
可以提供后端(包括,例如,'inline'、'notebook'、'gtk'、'qt4' 等)。如果未提供后端选项,它应该使用默认值。看起来这在 ipython 的某些版本中被破坏了(参见 here 和 here)。我在使用 matplotlib
的某些版本的 %matplotlib
命令时也遇到了一些问题。
所以,如果可能,请尝试更新ipython
和/或matplotlib
,看看是否能解决问题。
或者,使用%matplotlib --list
获取可用选项,然后选择一个并尝试(例如):
%matplotlib qt
如果您遇到一些花哨的绘图内容,有时一个后端在特定情况下不会像另一个后端那样工作,因此您可以测试运行一些并使用有效(或可用)的东西。此外,如果您想直接使用图形窗口进行操作(例如在屏幕上移动图形),那么这些将成为特定于后端的。如果您在jupyter notebook
中,请尝试%matplotlib inline
或%matplotlib notebook
。
【讨论】:
以上是关于%Matplotlib - AttributeError: 'NoneType' 对象没有属性 'lower'的主要内容,如果未能解决你的问题,请参考以下文章