颜色条显示一天中的时间

Colorbar showing time of the day

我正在研究散点图。我正在根据一天中的时间绘制颜色图。问题是颜色条将时间显示为小时分数,而不是时间。

我的代码:

plt.scatter(df[x], df[y], c=df.index.hour+df.index.minute/60, cmap='jet')
plt.colorbar()
plt.show()

上面的颜色条将时间显示为分数。例如,我想显示 17:30 而不是 17.5.

您可以设置一个明确的刻度formatter for the colorbar。例如(使用 matplotlib 3.3.1 测试):

plt.colorbar(format=lambda t, pos: f'{math.floor(t):02.0f}:{(t*60)%60:02.0f}')

PS:另一种设置刻度格式化程序的方法,可能也适用于较旧的 matplotlib 版本,是显式设置 FuncFormatter:

cbar = plt.colorbar()
cbar.ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda t, pos: f'{math.floor(t):02.0f}:{(t*60)%60:02.0f}'))

或者:

plt.colorbar(format=plt.FuncFormatter(lambda t, pos: f'{math.floor(t):02.0f}:{(t*60)%60:02.0f}'))