使用带有奇怪符号的字符串对图形进行注释

2 投票
1 回答
2278 浏览
提问于 2025-04-17 18:08

这件事应该很简单,但我在论坛上找不到答案。基本问题是:

我有一组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正确地编码这个字符串。

撰写回答