gpt4 book ai didi

用于 timedelta 的 matplotlib 智能轴标签

转载 作者:行者123 更新时间:2023-12-04 11:15:52 28 4
gpt4 key购买 nike

我在 matplotlib 中绘制了一个简单的 X 和 Y 值数据集。我的数据中的自变量是持续时间/时间增量(例如 60 秒、2 小时、24 小时、10 天),它在我的输入数据中始终表示为整数秒。我的问题是,matplotlib 是否可以以人类可读的形式智能地设置持续时间轴标签?

例如,在规模的小端,最好将 30 秒简单地显示为“30 秒”。在规模的大端,显示“10 天”而不是 864000 秒会更好。介于两者之间,最好以“分钟”和“小时”为单位读取标签。 matplotlib 是否有任何自动方式来推断大约人类可读的持续时间跨越几个数量级的东西?

理想情况下,我使用的任何方法都应该推广到跨越不同持续时间尺度的数据集,而不是针对一个输入数据集单独定制的图。

最佳答案

你能举个例子吗?这是你想要的吗:

import datetime                                                                                                                                                                                                                                                                

import numpy as np
import pylab as plt
import matplotlib

fig = plt.figure()
ax = fig.add_subplot(111)

x = np.linspace(0, 300) # 5 minutes
y = np.random.random(len(x))

ax.plot(x, y)

def timeTicks(x, pos):
d = datetime.timedelta(seconds=x)
return str(d)
formatter = matplotlib.ticker.FuncFormatter(timeTicks)
ax.xaxis.set_major_formatter(formatter)

plt.show()
Example output
它使用pythons timedelta。 864000 秒以上将导致“10 天,10:00:00”。您当然可以将更高级的格式放入 timeTicks()以上功能。

关于用于 timedelta 的 matplotlib 智能轴标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15240003/

28 4 0