python - 日期时间与值图在值轴上给出了奇怪的顺序
问题描述
给定表格数据
Wed May 27 18:00:02 2020 2029.63
Wed May 27 19:00:04 2020 2029.63
Wed May 27 20:00:06 2020 2029.63
Wed May 27 21:00:04 2020 2029.63
Wed May 27 22:00:03 2020 2029.63
Wed May 27 23:00:03 2020 1663.70
Thu May 28 00:00:05 2020 1663.70
Thu May 28 01:00:04 2020 1663.70
Thu May 28 02:00:03 2020 1663.70
Thu May 28 13:00:04 2020 2029.63
Thu May 28 14:00:06 2020 2029.63
Thu May 28 15:00:04 2020 2029.63
Thu May 28 16:00:02 2020 2029.63
Thu May 28 17:00:06 2020 2029.63
Thu May 28 18:00:03 2020 2029.63
Thu May 28 19:00:09 2020 2029.63
我正在尝试创建一个绘图日期/时间与值。我的方法非常简单(虽然有点老套......)
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import datetime
data = open("data.txt").read().split("\n")
data = [x for x in data if x!='']
date = []
values = []
for line in data:
index = line.find("\t")
time_str = str(line[4:index])
date_time_obj = datetime.datetime.strptime(time_str, '%b %d %H:%M:%S %Y')
date.append(date_time_obj)
values.append(line[index+1:])
#dates = mpl.dates.date2num(date)
dates = [x.date() for x in date]
dates_sorted, values_sorted = zip(*sorted(zip(dates, values)))
fig = plt.figure()
plt.plot(dates_sorted, values_sorted, 'ro')
fig.autofmt_xdate()
plt.show()
这会产生一个图,但不幸的是value
-axis 没有正确排序。为了解决这个问题,我尝试了这篇文章中的建议,但这也没有帮助。
解决方案
它可能会为您节省一些时间来看看pandas
。
import io
import pandas as pd
s = """Timestamp,Value
Wed May 27 18:00:02 2020,2029.63
Wed May 27 19:00:04 2020,2029.63
Wed May 27 20:00:06 2020,2029.63
Wed May 27 21:00:04 2020,2029.63
Wed May 27 22:00:03 2020,2029.63
Wed May 27 23:00:03 2020,1663.70
Thu May 28 00:00:05 2020,1663.70
Thu May 28 01:00:04 2020,1663.70
Thu May 28 02:00:03 2020,1663.70
Thu May 28 13:00:04 2020,2029.63
Thu May 28 14:00:06 2020,2029.63
Thu May 28 15:00:04 2020,2029.63
Thu May 28 16:00:02 2020,2029.63
Thu May 28 17:00:06 2020,2029.63
Thu May 28 18:00:03 2020,2029.63
Thu May 28 19:00:09 2020,2029.63"""
df = pd.read_csv(io.StringIO(s), parse_dates=['Timestamp'])
df.plot(x='Timestamp', y='Value')
只需将io.String
文件的路径替换为您的数据即可。pd.DataFrame.plot
在此处查找更多信息。
示例输出:
推荐阅读
- javascript - PixiJs Sprites 在顶部添加行
- python - 如何获得某个数字的固定排列数
- ubuntu - nginx 不会使用 100% cpu
- amazon-web-services - 基于 AWS SES 接收规则,执行 Lambda 函数,使用 SES 发送电子邮件
- regex - 正则表达式搜索没有虚拟的析构函数
- python - 彩色直方图 HSV 1D
- r - 根据特定字符出现的时间将一列分成两列
- c++ - 迭代 IShellItemArray 时避免代码重复
- php - 将引导程序 4 - 行更改为卡片或卡片组
- php - 使用 ajax 和 laravel 上传文件表单时出现问题?