gpt4 book ai didi

python - 是否可以在 matplotlib 中使用 set_xticklabels 格式化标签?

转载 作者:太空狗 更新时间:2023-10-30 02:39:13 25 4
gpt4 key购买 nike

为了设置轴对象的标签,使用xticklabels 方法:

fig, ax = plt.subplots()
ax.imshow(np.eye(101))
labels = np.linspace(2, 4, 4)
ax.set_xticks([0, 33, 66, 100])
ax.set_xticklabels(labels)

给出:

1

也可以使用 formatter 来格式化标签:

fig, ax = plt.subplots()
labels = np.linspace(2, 4, 4)
ax.imshow(np.eye(101))
ax.set_xticks([0, 33, 66, 100])
ax.set_xticklabels(labels)
ax.xaxis.set_major_formatter(FormatStrFormatter('%.2f'))

但是格式化程序只使用了刻度位置,而不是他的标签:

2

解决方法是在使用 set_xticklabels 之前手动格式化标签:

fig, ax = plt.subplots()
labels = ["{0:.1f}".format(x) for x in np.linspace(2, 4, 4)]
ax.imshow(np.eye(101))
ax.set_xticks([0, 33, 66, 100])
ax.set_xticklabels(labels)

3

那么,有两个问题:

  1. 在使用set_xticklabels 函数时是否可以格式化为标签?例如,通过使用格式字符串。
  2. set_xticklabelsFormatter 之间的链接是什么? ? Formatter 似乎根本没有考虑 set_xticklabels,而是自己生成标签。

最佳答案

设置 xticklabels 等同于使用 FixedFormatter

ax.set_xticklabels(ticks)

相同
ax.xaxis.set_major_formatter(matplotlib.ticker.FixedFormatter(ticks))

(参见 source code)

如果您设置了刻度标签,然后设置了格式化程序,它将简单地覆盖之前设置的刻度标签。反之亦然。

因为 set_xticklabels 使用 FixedFormatter 而不是例如FormatStrFormatter,您需要自己格式化刻度标签。从这个意义上讲,使用 FormatStrFormatter 可能比使用预格式化列表更好。

关于python - 是否可以在 matplotlib 中使用 set_xticklabels 格式化标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45056579/

25 4 0