[英]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.