gpt4 book ai didi

python - Matplotlib:自动修改轴标签

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:23 24 4
gpt4 key购买 nike

我知道可以通过手动设置来更改轴标签。 (例如:Modify tick label text)

但是,这显然只有在您知道自己想要什么标签时才有效,而我并非如此。

这是我想要完成的示例:我有两个 numpy 数组:x 包含 1 到 366 之间的数字(但不一定全部),代表 2016 年的天数。“y”包含一些其他数字。我想绘制“y”与“x”的散点图:

import numpy as np
import matplotlib.pyplot as plt
x = np.array([27, 38, 100, 300])
y = np.array([0.5, 2.5, 1.0, 0.8])
plt.scatter(x, y)

不出所料,这会生成一个刻度为 0、50、100、...、350 的图表。我想将这些刻度标签更改为单独的日期。 (例如,50 处的刻度会被标记为“2 月 19 日”。)假设我有一个函数 tick_to_date 可以将数字 0 转换为日期字符串,所以我很容易手动更改图表中的所有刻度。 (如果你需要一个占位符函数:tick_to_date = lambda x: ("day "+ str(x)))

ax = plt.gca()
ax.set_xticklabels([tick_to_date(tick.get_text()) for tick in ax.get_xticklabels()])

但是,这只会执行一次。如果我现在放大或采取任何更改刻度的操作,新的刻度标签将不会是我想要的样子。

理想情况下,我不会手动设置标签,而是告诉轴始终使用我自己的 tick_to_date 函数转换刻度标签。或者,每次更改刻度时调用上面的代码行,但我不确定它是否会很好地工作。这些中的任何一个是可能的/可行的/令人愉快的吗?

最佳答案

如果我真的理解你正在寻找的问题function formatter来自 matplotlib.ticker:

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

# I added 'y' to fit second argument (position) of FuncFormatter
tick_to_date = lambda x,y: ("day " + str(x))

x = np.array([27, 38, 100, 300])
y = np.array([0.5, 2.5, 1.0, 0.8])
plt.scatter(x, y)

ax = plt.gca()
# tick_to_date will affect all tick labels through MyFormatter
myFormatter = ticker.FuncFormatter(tick_to_date)
# apply formatter for selected axis
ax.xaxis.set_major_formatter(myFormatter)
plt.show()

关于python - Matplotlib:自动修改轴标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43606680/

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