【问题标题】:Adding time to x axis via python通过python将时间添加到x轴
【发布时间】:2018-02-12 19:05:22
【问题描述】:

我正在编写一个用于收集我的 fitbit 数据的 API,下面显示了一个摘录。我想问是否有人知道如何将 x 轴显示为 24 小时时间。该程序创建了一个 csv,在文件中我确实有日期和时间字段,但是无法将其显示在图表上。

(我已经删除了这段代码的开头部分,但它只包含导入函数和 CLIENT_ID 和 CLIENT_SECRET。)


server = Oauth2.OAuth2Server(CLIENT_ID, CLIENT_SECRET)
server.browser_authorize()
ACCESS_TOKEN = str(server.fitbit.client.session.token['access_token'])
REFRESH_TOKEN = 
str(server.fitbit.client.session.token['refresh_token'])
auth2_client = fitbit.Fitbit(CLIENT_ID, CLIENT_SECRET, oauth2=True, 
access_token=ACCESS_TOKEN, refresh_token=REFRESH_TOKEN)

yesterday = str((datetime.datetime.now() -
datetime.timedelta(days=1)).strftime("%Y%m%d"))
yesterday2 = str((datetime.datetime.now() - 
datetime.timedelta(days=1)).strftime("%Y-%m-%d"))
yesterday3 = str((datetime.datetime.now() - 
datetime.timedelta(days=1)).strftime("%d/%m/%Y"))

today = str(datetime.datetime.now().strftime("%Y%m%d"))

fit_statsHR = auth2_client.intraday_time_series('activities/heart', 
base_date=yesterday2, detail_level='15min')
time_list = []
val_list = []

for i in fit_statsHR['activities-heart-intraday']['dataset']:
    val_list.append(i['value'])
    time_list.append(i['time'])
heartdf = pd.DataFrame({'Heart 
Rate':val_list,'Time':time_list,'Date':yesterday3})


heartdf.to_csv('/Users/zabiullahmohebzadeh/Desktop/python-fitbit-
master/python-fitbit-master/Data/HeartRate - '+ \
           yesterday+'.csv', \
           columns=['Date','Time','Heart Rate'], header=True, \
           index = False)

plt.plot(val_list, 'r-')
plt.ylabel('Heart Rate')
plt.show()

【问题讨论】:

  • 您应该包含您的导入,或者至少说明您用于绘图的内容(即:plt 是什么)。我会添加一个minimal reproducible example,然后编辑掉 CLIENT_ID / SECRET)。

标签: python api plot fitbit


【解决方案1】:

您可以将您的 x 值传递给 plt.plot:

plt.plot(time_list, val_list, 'r-')

如果不知道您的 time_list 是如何格式化的,恐怕我无法建议将其设置为 24 小时制的最佳方式。

【讨论】:

  • 感谢您的快速回复。我试过了,但我得到了一个错误。最后一行说 'ValueError: could not convert string to float: '00:00:00'' time_list should be %Y-%m-%d 其他一切正常并显示图表。只是 xaxis 没有正确显示
  • 你现在明白这意味着什么吗?我认为 time_list 中的第一个元素是一个字符串“00:00:00”,解释器正确地将其转换为浮点数,这是 matplotlib 对其 x 轴的要求。 time_list 不是 %Y-%m-%d 的列表 - 它似乎是 %H:%M:%S。我建议将 time_list 重新格式化为 acceptable formats of a float-castable string 之一,然后重试。
猜你喜欢
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多