这是对此问题的部分交叉帖子。
这是我的代码的最小示例:
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——我无法控制这些版本,并且必须与它们有关。
我应该如何更改输入以获得所需的输出?
编辑
受这个问题/答案的启发,我尝试了我的系统知道的所有不同字体:
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
我遇到了这个问题:Python 绘图中
的上标答案表明问题可能来自使用A$_2$
而不是$A_2$
.
不幸的是,在这种情况下,这并没有改变输出。