由于Matplotlib图例中的负数,因此IPython Notebook中的UnicodeDecodeError

时间:2015-11-17 14:12:59

标签: python matplotlib unicode ipython-notebook

在这里的小型IPython Notebook中遇到一个奇怪的错误:https://gist.github.com/goulu/ba518d1a0a5267c0d3f3

在方法repr_svg方法中为IPython Notebook生成svg图(2.7内核)

plt.legend()
savefig(output, format='svg')

生成内容 <!-- \xe2\x88\x925 -->

for&#34; -5&#34;在图例中,它通过IPython / Jupyter客户端

在JSON中导致UnicodeDecodeError

错误在哪里?在我的代码中,在Matplotlib中还是在IPython中?

2 个答案:

答案 0 :(得分:0)

您的数据似乎有一些不受支持的字符。你可以尝试

data= unicode(output.getvalue(), errors='replace')

data= unicode(output.getvalue(), errors='ignore')

unicode('\xe2\x88\x925',errors= 'ignore')
output:
u'5'

答案 1 :(得分:0)

通过在_repr_svg_方法的末尾添加.decode('utf-8')来解决:

def _repr_svg_(self):
    fig, ax = plt.subplots()
    ax.plot(self.x,self.y)
    plt.legend()

    from io import BytesIO
    output = BytesIO()
    fig.savefig(output, format='svg')
    data=output.getvalue() # .encode('utf-8') doesn't change anything
    plt.close(fig)
    return data.decode('utf-8')

对不起噪音: - /