这是对 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/