使用带有奇怪符号的字符串对图形进行注释
这件事应该很简单,但我在论坛上找不到答案。基本问题是:
我有一组CSV文件,内容格式是:
"X,Temp °C\n1,25\n..."
注意这个度数符号,这正是我遇到的问题所在。我正在使用numpy和matplotlib,并且我用以下方式导入这个文件:
GT_kwargs = dict(delimiter=',',names=True)
data_array = numpy.genfromtxt(filenm, **GT_kwargs)
这样可以正确生成一个numpy数组,数据类型是:
[('X', '<f8'), ('Temp_\xb0C', '<f8')]
到目前为止一切正常。数据可以很好地绘制出来,但问题出现在我想用从表头提取的名称来标注曲线时,特别是当我尝试传递:
pyplot.annotate(data_array.dtype.names[1], xy=(1,1))
这时出现了错误:
ValueError: matplotlib显示文本必须所有字符代码小于128,或者使用Unicode字符串
显然,问题出在\xb0C这个度数符号上。我尝试用Unicode字符串替换这个符号,但没有效果。我该如何更改这个字符串,以便在标注中包含度数符号呢?
补充:我把问题缩小了一点。我该如何判断一个字符串的编码?这是个很基础的问题,但我还是找不到答案(这通常就是这样)。如果能提供一些好的文档链接就太好了。
相关问题:
1 个回答
1
\xb0 是不正确的utf-8编码,这就是问题所在。把 \xb0 替换成 \xc2\xb0,就能让utf-8正确地编码这个字符串。