我在做一个有大量温度数据的项目,我正在处理和绘制我所有的数据。然而,当我试图在时间1(9:00)和时间2(21:00)之间设置赛程限制时,我总是犯规
数据背景:
传感器已经连续两周每秒收集一次数据,我已经将主数据文件分割成更小的每日文件(例如dayX)。每天包含一个时间戳(column='timestamp')和一个平均温度(column='means')
每天的数据已经在我想要绘制的窗口上稍微预许可了(即dayX包含8:55:00-21:05:00的数据)。数据集在某些点包含NaN值,因为传感器没有磨损,需要丢弃数据
目标:
我想做的是能够在一个设定的时间间隔(xulim=9:00-21:00)之间绘制dayX数据。由于我有很多天的数据,我最终想用相同的x轴绘制每一天(我希望它们作为单独的图形,而不是子图),但是每一天在主数据集中有不同的间隔,所以我想设置恒定的x lims。由于我有许多不同的数据日,我宁愿不必指定日期和时间
示例数据:
dayX =
timeStamp meanT
2018-05-10 08:55:00 NaN
. .
. .
. .
2018-05-10 18:20:00 32.4
. .
. .
. .
2018-05-10 21:05:00 32.0
我尝试过的:
import pandas as pd
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib.dates import date2num, DateFormatter
dayX = pd.read_csv('path/to/file/dayX.csv)
dayX['timeStamp'] = pd.to_datetime(dayX['timeStamp'], format=%Y %m %d %H:%M:%S.%f')
fig, ax1 = plt.subplots(1,1)
ax1.plot(dayX['timeStamp'], dayX['meanT'])
ax1.xaxis.set_major_formatter(DateFormatter('%H:%M'))
ax1.set_xlim(pd.Timestamp('9:00'), pd.Timestamp('21:00'))
fig.autofmt_xdate()
plt.show()
它给出:
但是,如果我删除了限制线,数据绘图就可以了,但是限制是自动选择的
# Get rid of this line:
ax1.set_xlim(pd.Timestamp('9:00'), pd.Timestamp('21:00'))
# Get this:
我真的不知道为什么会出问题,或者我还应该尝试什么
您可能需要构造一个完整的timestamp对象,因为它默认为今天的日期,在您的示例中没有数据。下面的代码片段应该替换代码中的
ax1.set_xlim
行,并且还应该适用于在您选择的特定时间开始和结束多天时间范围你的
timeStamp
是一个datetime
对象。您所要做的就是传递datetime对象作为限制输出:
相关问题 更多 >
编程相关推荐