繁体   English   中英

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

[英]How do you change the x-axis scale/ticks in a bar chart with time values in the x-axis?

我有一个看起来像这样的数据框:

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)

暂无
暂无

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

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