matplotlib与乳胶一起使用时不能解码utf-8

时间:2017-06-19 21:48:43

标签: python matplotlib

在ipython(python 2.7)中使用这个最小的例子:

from matplotlib import pylab
unic = u'\xb0'
unicen = unic.encode('utf-8')
plt.plot([1,2],[3,4])
plt.xlabel(r'$\Delta$ [%s]'%(unicen), size='xx-large')

我收到一条很长的错误消息,结尾于:

  

UnicodeDecodeError:' ascii'编解码器不能将字节0xc2解码到位   10:序数不在范围内(128)

如果我打印unic,unicen或str(unicen),一切都很好,这意味着matplotlib似乎无法处理编码。 str(unic)导致相同的错误,但unic.encode(' utf-8')确实在打印消息中处理它。

我已经开始使用添加# - - 编码:utf-8 - - 和unichr(0xB0),然后尝试了我找到的所有其他解决方案。实际上,uni.encode()是另一种失败的解决方案。我做错了什么?

---------------------------------- EDIT --------- ---------------------

下面的答案是解决我上面的问题,但是当我尝试使用乳胶时发生了相同的错误,因此看起来乳胶和matplotlib不能正常协同工作。

这里导致此错误的简单脚本(已通过以下建议更正):

from matplotlib import pylab
unic = u'\xb0'

plt.plot([1,2],[3,4])

plt.rc ('text', usetex=True)
plt.rc ('font', family='serif')
plt.rc ('font', serif='Computer Modern Roman')

plt.xlabel(u'$\Delta$ [%s]'%(unic), size='xx-large')

1 个答案:

答案 0 :(得分:0)

将您传递给xlabel的字符串定义为unicode:

 # -- coding: utf-8 --

from matplotlib import pylab
unicen = u'\xb0'
plt.plot([1,2],[3,4])
plt.xlabel(u'$\Delta$ [%s]'%(unicen), size='xx-large')

<强>输出:

enter image description here