【问题标题】:Change formatting on datetime ticks when plotting daily mean with Pandas/matplotlib [duplicate]使用 Pandas/matplotlib 绘制每日平均值时更改日期时间刻度的格式 [重复]
【发布时间】:2014-06-17 09:18:43
【问题描述】:

我正在计算每日平均值,标准差为条形图。我的数据框如下所示:

                Ozone
2014-06-10  41.958586
2014-06-11  32.747222
2014-06-12  35.781250
2014-06-13  28.623264
2014-06-14  31.160764
2014-06-15  30.494444
2014-06-16  35.666667

[7 rows x 1 columns]

如您所见,索引行被很好地截断为每日日期。然而,当我尝试在条形图中绘制它时,七个条形图中的每一个都有完整的日期,后面跟着“00:00:00”。这可能是 matplotlib 试图变得聪明,但我不知道如何格式化索引,以便只显示每日日期。

看起来像这样:

2014-06-13 00:00:00

你对如何改变这个有什么建议吗?

【问题讨论】:

  • 我可以用这个创建标签:formatted_ticks = df.index.map(lambda t: t.strftime('%y-%m-%d %a')) print formatted_ticks,它给出了我想要的格式。但是,我不能调用情节来更改设置。情节是这样创建的:plot = mean.plot(legend = False, figsize=(20,10), kind = 'bar', yerr = std.Ozone, error_kw=dict(ecolor='black', lw=2, capsize=5, capthick=2)) fig = plot.get_figure() plt.ylabel('Mean ozone (ppb)') plt.tight_layout()

标签: python matplotlib plot pandas


【解决方案1】:

一种可能性是,由于 Pandas/Matplotlib 将日期作为 datetime 值,如果您将它们转换为字符串,那么您可以使用 datetime.strftime 方法控制格式。

【讨论】:

    【解决方案2】:

    这样做:

    formatted_ticks = mean.index.map(lambda t: t.strftime('%y-%m-%d %a'))
    plot.set_xticklabels(formatted_ticks)
    

    工作得很好。谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-14
      • 2019-05-01
      • 1970-01-01
      • 2020-04-11
      • 2014-03-24
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多