【发布时间】:2017-04-25 09:26:51
【问题描述】:
我知道可以通过手动设置来更改轴标签。 (例如: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 函数转换刻度标签。或者,每次更改刻度时都调用上面的代码行,但我不确定它是否能正常工作。这些是可能的/可行的/令人愉快的吗?
【问题讨论】:
标签: python matplotlib