Python 如何使用x轴上的时间值更改条形图中的x轴比例/刻度?

Python 如何使用x轴上的时间值更改条形图中的x轴比例/刻度?,python,pandas,datetime,matplotlib,Python,Pandas,Datetime,Matplotlib,我有一个如下所示的数据帧: Time Instances 00:32:00 1 00:35:00 1 00:51:00 1 01:51:00 1 04:08:00

我有一个如下所示的数据帧:

Time                                  Instances
00:32:00                              1
00:35:00                              1
00:51:00                              1
01:51:00                              1
04:08:00                              1
05:13:00                              1
05:14:00                              1
05:34:00                              1
05:51:00                              1
07:36:00                              1
07:53:00                              1
08:20:00                              1
09:34:00                              1
10:01:00                              1
10:18:00                              1
10:38:00                              1
10:51:00                              1
11:15:00                              1
12:14:00                              1
13:16:00                              1
13:28:00                              1
13:51:00                              1
15:56:00                              1
16:22:00                              1
16:35:00                              1
17:19:00                              1
我想绘制此图,但我希望x轴上的“刻度”为00:00:00,04:00:00,08:00:00,12:00:00,16:00:00,20:00:00,23:59:00。所以我从这个代码开始('t'是我的数据帧的名称)

编辑:添加加载数据的部分代码

import pandas as pd
from datetime import date, timedelta
import numpy as np
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
from matplotlib import cm
import random
import datetime
df=pd.read_csv(path)
df['Time']= pd.to_datetime(df['Time'])
df=df.sort_values("Time")
df.Time = df.Time.map(lambda x: x.replace(second=0))
df['Time'] =df['Time'].dt.time
t=df['Time'].value_counts().reset_index()
t.columns=['Time','Instances']
t=t.sort_values("Time")
ax = t.plot(x='Time',y='Instances',kind='bar', title ="Number of Instances By Time of Day", figsize=(20, 10), legend=True, fontsize=12)
ax.set_xticks([datetime.time(0,0,0,0),datetime.time(4,0,0,0),datetime.time(8,0,0,0),datetime.time(12,0,0,0),datetime.time(16,0,0,0),datetime.time(20,0,0,0),datetime.time(23,59,0,0)])
ax.set_xticklabels([datetime.time(0,0,0,0),datetime.time(4,0,0,0),datetime.time(8,0,0,0),datetime.time(12,0,0,0),datetime.time(16,0,0,0),datetime.time(20,0,0,0),datetime.time(23,59,0,0)])
然而,当我运行这段代码时,我得到一个空白的图形。


希望解决这个问题,任何帮助都将不胜感激

我认为问题在于别名,因为我看不出“t”的别名是什么

ax = t.plot(x='Time',y='Instances',kind='bar', title ="Number of Instances By Time of Day", figsize=(20, 10), legend=True, fontsize=12)
相反,尝试

ax = plt.plot(x='Time',y='Instances',kind='bar', title ="Number of Instances By Time of Day", figsize=(20, 10), legend=True, fontsize=12)

当我进行plt.plot(x=t['Time'],y=t['Instances'],kind='bar',title='按时间划分的实例数',figsize=(20,10),legend=True,fontsize=12)时,我得到了一个错误:“AttributeError:'list'对象在setxticks代码行上没有属性'setxticks'。那么为什么要使用x=t[Time]?把它放在列表中有什么用呢?这不是我得到错误的地方。当我执行ax.Setxticks([datetime.time(0,0,0,0),datetime.time(4,0,0,0),datetime.time(8,0,0,0),datetime.time(12,0,0,0),datetime.time(16,0,0,0),datetime.time(20,0,0,0),datetime.time(23,59,0,0)]时,错误出现在代码的下一行。即使我没有['Time'],我仍然会遇到同样的错误。最后一件事是,您可以尝试通过更改ax=t.plot(x='Time',y='Instances',kind='bar',title=“一天中的实例数”,figsize=(20,10),legend=True,fontsize=12)来运行它。到ax.plot(x='Time',y='Instances',kind='bar',title=“按时间划分的实例数”,figsize=(20,10),legend=True,fontsize=12)。看看你是否得到了滴答声,因为我没有发现你的代码中有任何错误,我一直在努力使用滴答声。这就是为什么要你这么做,伙计。请同时提供数据加载(如csv/excel读取和日期时间转换,如果已经完成)@Nikaido添加了这部分代码。