【问题标题】:How can I change datetime format of x-axis values in matplotlib using python?如何使用 python 在 matplotlib 中更改 x 轴值的日期时间格式?
【发布时间】:2016-10-19 04:33:22
【问题描述】:

如何使该图的 x 轴看起来更好?

在我的数据框中绘制所有值时,有什么方法可以在 x 轴上仅显示 3 个值?

我尝试使用plt.xticks(rotation=70),但它仍然减少了我的人数..

如您所见,它以MMM DD YYYY 的格式显示日期。

我想要MMM DDDD MMM 之类的东西。甚至写成 2 行DD MM \n YYYY

我怎样才能做到这一点?

这是用于生成图表的代码:

plt.plot(df_21d["Timestamp"], df_21d["Close"], label="Price", color="b")    

plt.title("BTC - 21 Dias")

plt.xlabel("Data")
plt.ylabel("Preco (em USD)")

plt.grid(True)

plt.show()

这是我的数据:

df_21d["时间戳"]

667   2016-05-27 08:00:00
668   2016-05-27 08:30:00
669   2016-05-27 09:00:00
670   2016-05-27 09:30:00
671   2016-05-27 10:00:00
Name: Timestamp, dtype: datetime64[ns]

df_21d[“关闭”]

667    480.00
668    471.36
669    477.35
670    476.55
671    479.92
Name: Close, dtype: float64

我不知道我是否必须格式化 df_21d.Timestamp 或者它是否是 matplotlib 配置。也许格式化时间戳并使用plt.xticks()将其作为向量传递......但我不确定如何做到这一点......

或者甚至可能只插入 x 轴的第一个、最后一个和中间值,例如:

plt.xaxis_labels = (df_21d["Timestamp"][1], 
             df_21d["Timestamp"][len(df_21d["Timestamp"])/2], 
             df_21d["Timestamp"][len(df_21d["Timestamp"])])

【问题讨论】:

  • 我知道这不能解决您的实际问题,但我建议您考虑使用更少的刻度。 5-7应该足以让读者对比例有一个很好的印象,它会让你的情节不那么混乱。
  • @ian_itor 我已经更新了我的问题。有什么方法可以显示 - 正如你所说 - x 轴上只有 3 个值?我不想只使用 3 个刻度,我想绘制所有刻度(不想插入我的数据)但只显示 x 轴上的第一个、最后一个和中间刻度时间戳值,这可能吗?

标签: python datetime pandas matplotlib plot


【解决方案1】:

这个答案可能会对您有所帮助: Not write out all dates on an axis, Matplotlib

本质上,你可以通过设置格式来设置日期的格式:

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d %m'))

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 2020-12-07
    • 2019-12-19
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多