python matplotlib轴标签下标基于循环计数器

时间:2013-02-05 16:33:05

标签: python unicode matplotlib labels

我正在使用python和matplotlib来生成图形输出。 我在循环中创建多个图,并希望循环计数器作为y轴标签上的索引。如何让循环计数器(变量)显示为下标?

这就是我所拥有的:

axis_ylabel = plt.ylabel(u"\u03b1 [\u00b0]", rotation='horizontal', position=(0.0,0.9))

导致:

α[°]

(我使用的是unicode而不是Tex,因为dvipng在这个系统上不可用。)

我想要这样的事情:

for i in range(1,3):  
  axis_ylabel = plt.ylabel(u"\u03b1" + str(i) + u" [\u00b0]", rotation='horizontal', position=(0.0,0.9))

毫不奇怪,这给了:

α1[°]
α2[°]

我真正想要的是要下标的数字。如何将转换与字符串结合使用命令来创建下标?在unicode环境中无法识别包含“_”以生成下标。另外,我仍然需要python / matplotlib来识别这个下标命令应该影响以下变量 有什么想法吗?

修改

我到目前为止:

axis_ylabel = plt.ylabel(u"\u03b1" + r"$_" + str(i) + r"$" + u" [\u00b0]", rotation='horizontal', position=(0.0,0.9))  

- 这会产生下标字符。但是, NOT 是整数值的转换,但是不同的符号。

编辑2
我使用的是python 2.6.6和matplotlib 0.99.1.1。在<> r"$<>$"中插入任何类型的字符串都不会导致显示该字符串,而是显示完全不同的字符。我已将此问题发布为new question

1 个答案:

答案 0 :(得分:1)

Matplotlib提供了自己的数学表达式引擎,称为mathtext 来自documentation

  

请注意,您不需要安装TeX,因为matplotlib   提供自己的TeX表达式解析器,布局引擎和字体。

所以也许尝试使用以下内容:

for i in range(1,3):
    plt.ylabel(
           r"$\alpha_{:d} [\degree]$".format(i),
           rotation='horizontal',
           position=(0.0,0.9))

您还可以在mathtext中使用Unicode:

  

如果一个特定的符号没有名字(就像许多人的名字一样)   在STIX字体中更加模糊的符号),Unicode字符也可以   使用:

 ur'$\u23ce$'