如何仅绘制datetime数组的第一个毫秒数字

2024-05-07 02:18:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含毫秒的日期时间数组。我仅使用以下方法绘制时间:

formatterTime = '%H:%M:%S.%f'
ax0.xaxis.set_major_formatter(formatterTime)

但是,datetime数组有6位毫秒数字,绘制为“11:45:05.100000”,我只需要1毫秒数字,如“11:45:05.1”

我试过一些建议,比如

.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]

但这似乎只在将日期时间打印为字符串时起作用

有没有办法只显示绘图上的第一个毫秒数字,而不修改原始日期数组


Tags: 方法字符串datetimeformatter时间绘制数字数组
1条回答
网友
1楼 · 发布于 2024-05-07 02:18:01

您可以使用FuncFormatter设置自己的格式。请参见此示例(使用一些虚假数据):

from matplotlib.ticker import FuncFormatter
from matplotlib.dates import num2date

x = pd.date_range("2020-01-01", periods = 10, freq = "131ms")
y = range(10)

fig, ax = plt.subplots()

def foo(a, b):
    t = num2date(a)
    ms = str(t.microsecond)[:1]
    res = f"{t.hour:02}:{t.minute:02}:{t.second:02}.{ms}"
    return res

ax.xaxis.set_major_formatter(FuncFormatter(foo))

ax.plot(x, y)

结果是:

enter image description here

相关问题 更多 >