【问题标题】:pandas plot doesn't show in ipython notebook as inline熊猫图在 ipython 笔记本中未显示为内联
【发布时间】:2015-04-07 17:27:38
【问题描述】:

我正在尝试在 ipython notebook 中内联绘制图形,但 .plot() methos 只显示对象信息,如

<matplotlib.axes._subplots.AxesSubplot at 0x10d8740d0>

但没有图表。我也可以用plt.show() 让它显示图形,但我想内联。所以我尝试了%matplotlib inlineipython 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。

标签: python matplotlib pandas plot ipython-notebook


【解决方案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。但是,decodeascii 作为默认编码,并且由于您的字符不属于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 的开发版本修复,它工作正常。

      很抱歉,我之前没能找到它。谢谢大家。

      【讨论】:

        猜你喜欢
        • 2016-06-05
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 2013-10-13
        • 2016-02-24
        • 2020-04-02
        • 2016-07-19
        • 2013-10-24
        相关资源
        最近更新 更多