基于循环计数器的python matplotlib轴标签下标 [英] python matplotlib axis label subscript based on loop counter

查看:66
本文介绍了基于循环计数器的python matplotlib轴标签下标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm using python and matplotlib to generate graphical output. I am creating multiple plots within a loop and would like the loop counter to serve as an index on the y-axis label. How do I get the loop counter (a variable) to appear as a subscript?

这就是我所拥有的:

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

导致:

α[°]

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

(I'm using unicode instead of Tex because dvipng is not available on this system.)

我想要这样的东西:

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[°]

α1 [°]
α2 [°]

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

What I really want is the numbers to be subscripts. How do I combine the conversion to a string with a command to create a subscript? Including a '_' is not recognized in the unicode environment to generate a subscript. Additionally, I still need python/matplotlib to recognize that this subscript-command should affect the following variable.
Any thoughts?

修改

我已经走了这么远:

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

-这导致下标字符.但是,它是整数值的转换,但符号不同.

-- this results in a subscript character. However, it is NOT a conversion of the integer value but a different symbol.

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

Edit 2
I am using python 2.6.6 and matplotlib 0.99.1.1. Inserting any kind of string at <> in r"$<>$" will not result in the display of that string but an entirely different character. I have posted this issue as a new question.

推荐答案

Matplotlib附带了自己的数学表达式引擎,称为mathtext.
文档:

Matplotlib ships its own mathematical expression engine, called mathtext.
From the documentation:

请注意,由于matplotlib,您不需要安装TeX 附带了自己的TeX表达式解析器,布局引擎和字体.

Note that you do not need to have TeX installed, since matplotlib ships its own TeX expression parser, layout engine and fonts.

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

So maybe try to use the following:

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

您也可以在mathtext中使用Unicode:

You can also use Unicode in mathtext:

如果特定符号没有名称(许多 STIX字体中包含更多晦涩的符号),Unicode字符也可以 被使用:

If a particular symbol does not have a name (as is true of many of the more obscure symbols in the STIX fonts), Unicode characters can also be used:

 ur'$\u23ce$'

这篇关于基于循环计数器的python matplotlib轴标签下标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆