繁体   English   中英

如何绘制一天中的日期时间-Matplotlib

[英]How to plot date times over a day - Matplotlib

我正在尝试导入和绘制午夜之后的日期时间。 输入数据集没有附加日期时间,因此我必须重新格式化该列,以使午夜之后的时间戳记延续到当天。 这是一个错误。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as dates

d = ({
    'Time' : ['0/1/1900 8:10:00', '0/1/1900 12:10:00', '0/1/1900 22:10:00', '1/1/1900 1:10:00'],                 
    'Value' : [1,2,3,4],                                
     })

df = pd.DataFrame(data = d)

df['Time'] = pd.to_datetime(df['Time'], format='%d/%m/%Y %H:%M:%S')
df.plot(x='Time', y='Value')
formatter = dates.DateFormatter('%Y-%m-%d %H:%M:%S') 
plt.gcf().axes[0].xaxis.set_major_formatter(formatter)

错误:

ValueError: time data '0/1/1900 8:10:00' does not match format '%d/%m/%Y %H:%M:%S' (match)

我了解这些不匹配。 但是我不确定什么是最有效的解决方法。 我可以增加一天吗? 还是有更好的方法来输入时间戳并在午夜之后将24小时添加到时间戳中?

问题是“ 0/1/1900”不是正确格式的日期(“ 1/1/1900”就可以了)。 我们可以将一个月的日期增加一个:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as dates

d = ({
    'Time' : ['0/1/1900 8:10:00', '0/1/1900 12:10:00', '0/1/1900 22:10:00', '1/1/1900 1:10:00'],                 
    'Value' : [1,2,3,4],                                
     })
df = pd.DataFrame(data = d)

df['Time'] = ['/'.join([str(int(x.split('/')[0])+1)] + x.split('/')[1:]) for x in d['Time']]

df['Time'] = pd.to_datetime(df['Time'], format='%d/%m/%Y %H:%M:%S')
df.plot(x='Time', y='Value')
formatter = dates.DateFormatter('%Y-%m-%d %H:%M:%S') 
plt.gcf().axes[0].xaxis.set_major_formatter(formatter)

输出:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM