python matplotlib 标签/标题错误字符

标签 python character-encoding matplotlib label

这是对 this question 的部分交叉发布.
这是我的代码的一个最小示例:

import matplotlib.pyplot as plt

x = [0.0, 0.25, 0.5, 0.75, 1.0]
y = [7.0, 3.0, 5.0, 1.0, 0.0]

II = 2

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)

# un-comment title as needed:
#plot_title = r"A$_" + str(II) + r"$"
#plot_title = "A$_" + str(II) + "$"
plot_title = (r"A$_%s$" % (str(II)))
print plot_title
plt.title(plot_title)
plt.show()  

同一个情节标题字符串有三个不同的版本。上面的 print plot_title 为每种情况提供了正确的原始字符串:

A$_2$  

但是,这些方法都没有在图中显示正确的字符串(独立于我使用的后端)。图中的输出揭示了输入整数值和输出之间的这种关系:

$0$ -> E  
$1$ -> £  
$2$ -> N  
$3$ -> ®  
$4$ -> X  
$5$ -> ¸(cedille)  
$6$ -> b  
$7$ -> ¿  
$8$ -> j  
$9$ -> 3  

我使用的是 python 2.6.6 和 matplotlib 0.99.1.1——我无法控制这些版本,只能使用它们。
我应该如何更改我的输入以获得所需的输出?

编辑

灵感来自 this question/answer我尝试了我的系统知道的所有不同字体:

import matplotlib.font_manager as font_manager  

for i in range(0,len(sorted(font_manager.findSystemFonts()))):
    plt.rcParams['font.family'] = os.path.basename(sorted(font_manager.findSystemFonts())[i])[:-4]  

并为每种字体和上面的例子生成了一个图。虽然我为文本设置了不同的字体,但我关心的下标 $_2$ 没有改变,始终显示为 N .

编辑 2
我已经升级到 matplotlib 1.3.0,问题消失了。这让我认为它与 0.99.1.1 版本有关
对我来说,这仍然不能令人满意,因为我很想知道为什么它会以这种方式运行。

编辑 3
我遇到了这个问题:Superscript in Python plots
答案表明问题可能是由使用 A$_2$ 而不是 $A_2$ 引起的。
不幸的是,这并没有改变这种情况下的输出。

最佳答案

我使用的是 matplotlib 版本 1.3.1 和 python 版本 2.7.8。
我遇到了类似的问题。我在写

ax1.set_yticklabels(['$10^4$','$10^5$','$10^6']$'

1 将呈现为 phi 符号。 0 将呈现为 E。4 将呈现为 Xi...等等。

我能够通过使用 '$\mathregular{10}^\mathregular{4}$' 来“修复”它,这有点麻烦,但它可以完成工作。

关于python matplotlib 标签/标题错误字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14733605/

相关文章:

python - DataFrame的表格保存为图片时如何让图片清晰

vim 中的 android 远程 python 脚本

numpy - 跨两个 2D numpy 数组获取相交行

c++ - 如何获得系统语言环境支持的代码集列表?

unicode - 在文本文件中查找非 ASCII 字符并将它们转换为对应的 Unicode 字符

python - 如何删除圆内的一组网格点?

python - 在 Python (PIL) 中确定 JPG 质量

python - AWS Glue - 将 GET(REST API) 请求的 Json 响应转换为 DataFrame/DyanamicFramce 并将其存储在 s3 存储桶中

node.js - NodeJS decodeURIComponent 无法正常工作

python-3.x - networkx:为每个节点设置不同的 alpha?