【问题标题】:Histogram in matplotlib, time on x-Axismatplotlib 中的直方图,x 轴上的时间
【发布时间】:2015-06-22 17:18:40
【问题描述】:

我是 matplotlib (1.3.1-2) 的新手,我找不到合适的起点。 我想用 matplotlib 在直方图中绘制点随时间的分布。

基本上我想绘制一个日期出现的累积总和。

date
2011-12-13
2011-12-13
2013-11-01
2013-11-01
2013-06-04
2013-06-04
2014-01-01
...

这样就可以了

2011-12-13 -> 2 times
2013-11-01 -> 3 times
2013-06-04 -> 2 times
2014-01-01 -> once

由于多年后会有很多点,所以我想在我的x-Axisend date上设置start date,然后标记n-time steps(即1年步长),最后决定多少@ 987654327@ 会有的。

我将如何实现这一目标?

【问题讨论】:

  • 你的数据是什么格式的? datetime 对象?
  • @hitzg Unix 时间码。但我可以重新格式化为datetime
  • @Stophface BTW 如果你已经有datetime,你可以做plt.hist(data_as_datetime)

标签: python time matplotlib plot histogram


【解决方案1】:

要添加到 hitzg 的答案,您可以使用 AutoDateLocatorAutoDateFormatter 让 matplotlib 为您进行定位和格式化:

locator = mdates.AutoDateLocator()
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(mdates.AutoDateFormatter(locator))

【讨论】:

    【解决方案2】:

    Matplotlib 使用自己的日期/时间格式,但也提供了简单的转换函数,这些函数在 dates 模块中提供。它还提供了各种LocatorsFormatters,它们负责在轴上放置刻度并格式化相应的标签。这应该可以帮助您开始:

    import random
    import matplotlib.pyplot as plt
    import matplotlib.dates as mdates
    
    # generate some random data (approximately over 5 years)
    data = [float(random.randint(1271517521, 1429197513)) for _ in range(1000)]
    
    # convert the epoch format to matplotlib date format 
    mpl_data = mdates.epoch2num(data)
    
    # plot it
    fig, ax = plt.subplots(1,1)
    ax.hist(mpl_data, bins=50, color='lightblue')
    ax.xaxis.set_major_locator(mdates.YearLocator())
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%d.%m.%y'))
    plt.show()
    

    结果:

    【讨论】:

    • 太棒了。正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2023-03-31
    • 2015-05-02
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    相关资源
    最近更新 更多