这是部分交叉发布到this question。
这里是我的代码小例子:python matplotlib标签/标题错误字符
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
。
EDIT 2
我已经升级到1.3.0 matplotlib和问题走了。这使我认为它必须与版本0.99.1.1
对我来说,这仍然不令人满意,因为我本来想知道为什么它是这样表现。
编辑3
我遇到了这样一个问题:Superscript in Python plots
答案表明,问题可能来自使用A$_2$
代替$A_2$
出现。
不幸的是,这并没有改变这种情况下的输出。
您是否正在使用上述标记,因为您正尝试在图形标题中使用LaTeX?如果是这种情况,您是否在代码的开头尝试了'rc('text',usetex = True)'以在输出中指定LaTeX? – cosmosis
@cosmosis:我不一定需要乳胶,我只需要一些希腊字母和下标。作为一个长期的LaTex用户,这个语法对我来说很简单。我尝试过'rc('text',usetex = True)',但是这个网络的设置中有些东西无法正常工作,因为它会产生很多错误。不幸的是,数学类型并没有真正起作用(请参阅顶部的'cross-post'链接。 – Schorsch