簡體   English   中英

如何為我的 plot 數據的日期時間索引創建整齊的 x 軸

[英]how to create a tidy x-axis of datetime indexes of a data for my plot

我正在繪制一個 dataframe ,其索引的類型為 datetime (如2018-05-29 08:20:00 )。

我根據最后一小時最后一天以及上周上個月對數據進行切片,然后我對它們進行 plot。

數據是每隔一分鍾收集一次。 因此,每一行的索引僅相差一分鍾。

當我 plot 上一小時的數據時,x 軸繪制如下:

在此處輸入圖像描述

或者,上個月是這樣的:

在此處輸入圖像描述

這是干凈和可讀的。 但是,當我 plot 最后一天的數據時,x 軸索引如下:

在此處輸入圖像描述

為什么會重疊? 如何解決?

plot 的代碼這些時間范圍是相同的,只是給定的 dataframe 發生了變化:

self.canvas.axes.plot(df_day.index, df_day.loc[:, item], linestyle="None", marker='.')
                      # or df_month or df_week or df_hour

如何將 x 軸索引設為我想要的格式? 我希望它打印為最后一小時的hour:minute ,或最后day hour:minute

我嘗試了這些鏈接,但沒有一個有幫助:

我試過了

self.canvas.axes.xaxis.set_major_formatter(self.major_formatter, self.canvas.axes.get_xticklabels())

@ticker.FuncFormatter
def major_formatter(x, pos):
    return datetime.datetime.fromtimestamp(x.day / 1e3)

但它在x變量中返回int46 ,所以它沒有幫助。

從第一個答案到如何 plot 日期和月份,這也是問題所有者的回答,我找到了解決方案:

import matplotlib.dates as mdates
import matplotlib.pyplot as plt 

fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(date, price , label="Price")
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m-%d'))

或者在我的情況下:

self.canvas.axes.xaxis.set_major_formatter(mdates.DateFormatter('%d-%b'))

strftime() 和 strptime() 格式代碼¶ ,可以了解日期和時間的格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM