matplotlib:更改yaxis tick标签

Joe*_*Joe 8 python matplotlib

对于y轴上的每个刻度标签,我想改变: label -> 2^label

我正在绘制日志日志数据(基数2),但我希望标签显示原始数据值.

我知道我可以获得当前的y标签 ylabels = plt.getp(plt.gca(), 'yticklabels')

这给了我一个清单:<a list of 9 Text yticklabel objects> 每个都是一个<matplotlib.text.Text object at 0x...>

我在http://matplotlib.org/users/text_props.html查看了文本对象的文档, 但我仍然不确定更改每个文本标签中的字符串的正确语法是什么.

更改标签后,我可以使用以下方法在轴上设置它们:

plt.setp(plt.gca(), 'yticklabels', ylabels)

tac*_*ell 10

如果要做到这一点你可以使用一般的情况下FuncFormatter(参见: matplotlib轴标签格式,imshow:标签作为图像索引的任意功能.Matplotlib set_major_formatter AttributeError的)

在你的情况下,以下应该工作:

import matplotlib as mpl
import matplotlib.pyplot as plt

def mjrFormatter(x, pos):
    return "$2^{{{0}}}$".format(x)

def mjrFormatter_no_TeX(x, pos):
    return "2^{0}".format(x)

ax = plt.gca()
ax.yaxis.set_major_formatter(mpl.ticker.FuncFormatter(mjrFormatter))
plt.draw()
Run Code Online (Sandbox Code Playgroud)

荒谬的{}逃避是新式字符串的结果