我知道可以通过手动设置轴标签来更改它们。(例如: 修改刻度标签文本)
然而,这只适用于您知道要使用哪些标签的情况,而这并不适用于我。
以下是我想要完成的示例:
我有两个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
函数来转换刻度标签。或者,每次更改刻度时调用上面的代码行,但我不确定那样是否有效。这两种方法都可行/可行/易于实现吗?