用python绘制时间序列数据帧

2024-10-02 02:36:19 发布

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

我很难从数据帧python绘制时间序列图。请在下面查找数据类型

Time_split     datetime64[ns]   
Total_S4_Sig1        float64

时间分割列是X轴,是时间变量。总s4是Y变量,是一个浮点值

0      15:21:00
1      15:22:00
2      15:23:00
3      15:24:00
4      15:25:00
5      19:29:00
6      19:30:00
7      19:31:00
8      19:32:00
9      19:33:00

请注意,时间序列永远不会以秒为分数,即始终为00,并且数据是连续的,即以分钟为单位的连续数据

数据不一定在一整小时内开始。它可以在任何时间开始,例如15:35。我想创建一个图表,其中X轴的主标记将是整小时,如19:00、21:00、22:00,而次标记应为半小时,即21:30、19:30。我不想让别人认为时间的秒部分是无用的

我想让它做的只是以HH:MM格式绘制小时和分钟的图表,以及整小时的主要标记和半小时的次要标记

keydata["Time_split"] = keydata["Time_split"].dt.time
keydata.plot(x='Time_split', y='Total_S4_Sig1')
plt.show()  

这段代码导致了这样一个情节

enter image description here

我不希望显示秒数,我希望标记时间为整小时,小标记时间为半小时

keydata["Time_split"] = keydata["Time_split"].dt.time
time_form = mdates.DateFormatter("%H:%M")
ax = keydata.plot(x='Time_split', y='Total_S4_Sig1')
ax.xaxis.set_major_formatter(time_form)
plt.show()  

这段代码导致了这样一个情节

enter image description here

请注意,秒数始终为00


Tags: 数据标记timeplot图表时间dt绘制
2条回答

尝试使用matplotlib date formatting

import matplotlib.dates as mdates
date_fmt = mdates.DateFormatter('%H:%M:%S')

# plot your data
ax = df.plot.line(x='time', y='values')

# add the date formatter as the x axis tick formatter
ax.xaxis.set_major_formatter(date_fmt)

以下内容应解决您面临的问题:

import pandas as pd
from datetime import date, datetime, timedelta
import matplotlib.pyplot as plt
import matplotlib.dates as md
import numpy as np
#testing data
#keydata = pd.read_csv('test.txt',sep='\t',header=None,names=['Time_split','Total_S4_Sig1'])
x = pd.to_datetime(keydata['Time_split'])
y = keydata['Total_S4_Sig1']
# plot
fig, ax = plt.subplots(1, 1)
ax.plot(x, y,'ok')
# Format xtick labels as hour : minutes
xformatter = md.DateFormatter('%H:%M') 
## Set xtick labels to appear every 1 hours
ax.xaxis.set_major_locator(md.HourLocator(interval=1))
#set minor ticks every 1/2 hour
ax.xaxis.set_minor_locator(md.MinuteLocator(byminute=[0,30],interval=1))

plt.gcf().axes[0].xaxis.set_major_formatter(xformatter)
plt.show()

相关问题 更多 >

    热门问题