【问题标题】:plot histogram of datetime.time python / matplotlib绘制 datetime.time python / matplotlib 的直方图
【发布时间】:2012-01-12 06:21:26
【问题描述】:

我正在尝试绘制 datetime.time 值的直方图。这些值被离散化为五分钟切片。列表中的数据如下所示:

['17:15:00', '18:20:00', '17:15:00', '13:10:00', '17:45:00', '18:20:00']

我想绘制直方图或某种形式的分布图,以便轻松检查每次出现的次数。

注意。给定每个时间然后离散化。直方图中的最大 bin 数为 288 = (60 / 5 * 24)

我查看了 matplotlib.pyplot.hist。但是需要某种连续的标量

【问题讨论】:

  • 最简单的可能是将时间转换为秒并使用它来制作直方图。然后您可以手动更改直方图的标签。
  • 或者直接将时间转换为bin = seconds/300,并绘制每个bin的计数。

标签: python datetime matplotlib histogram


【解决方案1】:

我按照 David Zwicker 所说的做了,用了秒,然后改变了 x 轴。我会看看戴夫对“垃圾箱”的看法。这大致有效,并给出了一个每小时条形图。

def chart(occurance_list):
    hour_list = [t.hour for t in occurance_list]
    print hour_list
    numbers=[x for x in xrange(0,24)]
    labels=map(lambda x: str(x), numbers)
    plt.xticks(numbers, labels)
    plt.xlim(0,24)
    plt.hist(hour_list)
    plt.show()

【讨论】:

  • 接受:David Zwicker 和@Dave 所说的
  • 有趣的是,matplotlib 并没有更干净地处理这个问题。 matplotlib 对日期时间有非常好的功能,但出于某种原因,matplotlibpandas 不想将时钟时间视为数字(在加/减等意义上也是如此......)。
【解决方案2】:

您必须将数据转换为两个变量,然后您可以使用 plotlab 绘制直方图。

【讨论】:

  • 我不太明白你的意思。