【问题标题】:Histogram per hour - matplotlib每小时直方图 - matplotlib
【发布时间】:2018-11-10 23:55:42
【问题描述】:

我正在分析英国交通事故的公共数据。

我的数据框如下所示:

Index     Time

0         02:30
1         00:37
2         01:25
3         09:15
4         07:53
5         09:29
6         08:53
7         10:05

我正在尝试绘制一个直方图,显示一天中不同时间的事故分布, 这是我的代码:

  import matplotlib
  import matplotlib.pyplot as plt
  import numpy as np
  import datetime as dt
  import matplotlib.dates as mdates
  df['hour']=pd.to_datetime(df['Time'],format='%H:%M')
  df.set_index('hour', drop=False, inplace=True)
  df['hour'].groupby(pd.Grouper(freq='60Min')).count().plot(kind='bar', color='b')

这是输出:

在此图中,我想将 x 轴上的标签更改为“hh:mm”格式。我该怎么做呢?

【问题讨论】:

  • this question 相同,您只需保留另一半字符串。
  • @mostafazh,谢谢你的回答。您的答案有效,但 x 轴看起来像 imgur.com/a/0gBB7KJ 。所以 x 轴没有索引(我一直在寻找 01:00h、02:00h、03:00、.. 这样的 x 轴)
  • 不,我希望 x 轴按时间索引(01:00、02:00、03:00 ..而不是 02:30、00:30、01:25) .
  • @mostafazh,我的问题是我想绘制按小时分组的数据。我在第一个解决方案中做得很好。唯一的问题是数据时间格式。我需要 01:00 而不是 01/01/1900 01:00
  • @mostafazh,谢谢!!它现在工作正常,在 Jupyter 中绘图时遇到了一些问题。我刚开始用 Python 编程。关于好的 IDE 有什么建议吗?我正在使用 Jupyter,但并不完全满意。我正在寻找互动的东西。

标签: python matplotlib histogram pandas-groupby


【解决方案1】:

你缺少的是设置matplotlib x轴格式的格式:

df.set_index('hour', drop=False, inplace=True)
df = df['hour'].groupby(pd.Grouper(freq='60Min')).count()
ax = df.plot(kind='bar', color='b')
ticklabels = df.index.strftime('%H:%Mh')
ax.xaxis.set_major_formatter(matplotlib.ticker.FixedFormatter(ticklabels))
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 2011-10-22
    • 2011-07-16
    • 1970-01-01
    • 2019-07-07
    • 2014-12-15
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多