这是部分交叉帖子这个问题 https://stackoverflow.com/questions/14712292/python-matplotlib-axis-label-subscript-based-on-loop-counter.
这是我的代码的一个最小示例:
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——我无法控制这些版本,并且必须使用它们。
我应该如何更改输入以获得所需的输出?
Edit
灵感来自这个问题/答案 https://stackoverflow.com/questions/16635293/unicode-character-render我尝试了我的系统知道的所有不同字体:
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
我已经升级到 matplotlib 1.3.0,问题就消失了。这让我觉得这与版本 0.99.1.1 有关
对我来说,这仍然不能令人满意,因为我很想知道why它就是这样表现的。
EDIT 3
我遇到了这个问题:Python 绘图中的上标 https://stackoverflow.com/questions/21226868/superscript-in-python-plots
答案表明问题可能是由使用引起的A$_2$
代替$A_2$
.
不幸的是,这并没有改变这种情况下的输出。