图表绘制:更改y轴刻度标签

2024-09-27 09:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我知道我可以用 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)


Tags: 数据text文本原始数据matplotlib绘制plt标签
2条回答

根据http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_yticks

a = plt.gca()
a. set_yticks(list_of_labels)

如果要在一般情况下执行此操作,可以使用FuncFormatter(请参见: matplotlib axis label formatimshow: labels as any arbitrary function of the image indicesMatplotlib 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()

脱离的{}转义是来自matching的新样式字符串的结果

相关问题 更多 >

    热门问题