gpt4 book ai didi

python - 将 x 的函数作为 x 刻度标签

转载 作者:行者123 更新时间:2023-11-30 21:50:17 28 4
gpt4 key购买 nike

假设我有两个 numpy 数组 xy ,我想绘制一条简单的曲线 y作为 x 的函数。在y轴,我想放置(作为标签) y 的值,但在 x axis 我想将其中值的一些函数作为标签。

例如,如果 x=array([1, 2, 4, 8, 16])y=array([1, 2, 1, 2, 1]) ,我想为 xticks 分配标签,这将是以下字符串格式的结果:

lambda x_val: "$2^{{+{:.0f}}}$".format(log2(x_val))

但我对通用解决方案感兴趣。

最佳答案

使用matplotlib.ticker.FuncFormatter。无耻地复制和改编custom ticker例如,这样的事情可以工作:

from matplotlib.ticker import FuncFormatter
import matplotlib.pyplot as plt
from matplotlib import rc
import numpy as np

rc('text', usetex=True)

formatter = FuncFormatter(lambda x_val, tick_pos: "$2^{{+{:.0f}}}$".format(np.log2(x_val)))

x = np.array([1, 2, 4, 8, 16])
y = np.array([1, 2, 1, 2, 1])
fig, ax = plt.subplots()
ax.xaxis.set_major_formatter(formatter)
plt.plot(x, y)
plt.show()

结果

enter image description here

注意第一个标签是坏的;运行代码时会发出被零除的警告。这是因为 matplotlib 将轴缩放在 0 到 16 之间,并在 0 处放置刻度线(然后将其传递给格式化程序)。您可以关闭该刻度线,或以不同的方式缩放 x 轴以避免这种情况。

关于python - 将 x 的函数作为 x 刻度标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24055060/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com