熊猫图在 ipython 笔记本中未显示为内联
Posted
技术标签:
【中文标题】熊猫图在 ipython 笔记本中未显示为内联【英文标题】:pandas plot doesn't show in ipython notebook as inline 【发布时间】:2015-04-07 17:27:38 【问题描述】:我正在尝试在 ipython notebook 中内联绘制图形,但 .plot()
methos 只显示对象信息,如
<matplotlib.axes._subplots.AxesSubplot at 0x10d8740d0>
但没有图表。我也可以用plt.show()
让它显示图形,但我想内联。所以我尝试了%matplotlib inline
和ipython notebook --matplotlib=inline
,但没有任何帮助。
如果我使用%matplotlib inline
,则显示.plot()
/Users/<username>/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/IPython/core/formatters.py:239:
FormatterWarning: Exception in image/png formatter: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) FormatterWarning,
并且使用ipython notebook --matplotlib=inline
显示相同。
【问题讨论】:
认为我们需要更多信息,展示您的代码、导入和平台... 您在使用% matplotlib inline
时描述的错误是由于处理Unicode 和字符串的问题。可能,您有用latin-1
编码的字符,并且转换正在尝试使用decode
。但是,decode
正在使用默认编码 ascii
将您的字符转换为 unicode,并且由于在 ascii 中找不到该字符,因此转换失败。在将数据传递给 matplotlib 之前,您应该尝试使用 decode ("\xe2".decode(encoding='latin-1')
) 将字符串转换为 unicode。
【参考方案1】:
改变
ipython notebook --matplotlib=inline
到
ipython notebook --matplotlib inline
注意没有=
标志。
【讨论】:
【参考方案2】:我会根据我上面的评论给你一个例子:
你有这样的东西:
import matplotlib.pyplot as plt
%matplotlib inline
legend = "\xe2"
plt.plot(range(5), range(5))
plt.legend([legend])
导致:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
正如我所说,这是因为 matplotlib 想要使用 unicode
类型的字符串。因此,在绘图过程中,matplotlib 尝试使用 decode
解码您的字符串以将其转换为 unicode。但是,decode
将ascii
作为默认编码,并且由于您的字符不属于ascii
,因此会显示错误。解决办法是自己用合适的编码解码字符串:
import matplotlib.pyplot as plt
%matplotlib inline
legend = "\xe2".decode(encoding='latin-1')
plt.plot(range(5), range(5))
plt.legend([legend])
顺便说一句,关于使用ipython notebook --matplotlib inline
,这样做被认为是不好的做法,因为你隐藏了你为了获得结果笔记本所做的事情。最好在笔记本中包含%matplotlib inline
。
【讨论】:
【参考方案3】:感谢您的所有帮助。 以上方法我都试过了,还是不行。
在这里我发现这是 matplotlib 1.4.x 中 fontmanager.py
中的错误,用 this matplotlib 的开发版本修复,它工作正常。
很抱歉,我之前没能找到它。谢谢大家。
【讨论】:
以上是关于熊猫图在 ipython 笔记本中未显示为内联的主要内容,如果未能解决你的问题,请参考以下文章
在 IPython 中使用自定义样式在函数内部显示熊猫数据框
可以在不使用内联绘图的情况下远程访问 IPython Notebook 吗?