簡體   English   中英

繪制按小時和星期幾分組的時間序列

[英]plotting time series grouped by hour and day of week

我有一年多的每小時時間序列數據,並希望繪制一周中每一天的平均每小時測量值。 我運行了以下代碼,我的數據采用以下格式(我之前為一周中的幾天創建了列)。

df = df.groupby([df['date_UTC'].dt.hour, df['w_day']]).pm2_5_ugm3.mean().reset_index().dropna()

date_UTC    w_day   pm2_5_ugm3
0   0   Friday  11.868802
1   0   Monday  12.741524
2   0   Saturday    13.346273
3   0   Sunday  13.093804
4   0   Thursday    14.525096
... ... ... ...
163 23  Saturday    12.836788
164 23  Sunday  12.712683
165 23  Thursday    12.046935
166 23  Tuesday 12.043133
167 23  Wednesday   14.164027

我最終想要一個看起來像下面的圖,但我不確定如何使用 seaborn/matplotlib 來繪制它。

在此處輸入圖片說明

更新:

我使用了@Arnold Vialfont 的建議,它基本上讓我得到了我正在尋找的結果,但是當我引入色調時,facetplot 似乎不允許我繪制圖例。 然后我使用了因子圖,但是這個圖似乎不能產生線圖,這正是我需要的。 有沒有辦法使用因子圖並讓色調產生圖例?

col_order=["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

sns.set_style("white")
ax = sns.FacetGrid(df, col="w_day", col_wrap=7, height=6, col_order=col_order, hue ='Zone')
ax.map(sns.lineplot, "date_UTC", "pm2_5_ugm3")

色調不產生傳奇

在此處輸入圖片說明

在這里使用 factorplot 我有一個圖例,但無法根據需要生成線圖。

ax = sns.catplot(x="date_UTC", y="pm2_5_ugm3", col="w_day", hue = 'Zone',
                data=df, ci=None, aspect=.6)

在此處輸入圖片說明

您可以通過以下方式使用seaborn ,其中col_wrap允許選擇每行的圖形數量:

g = sns.FacetGrid(df, col="w_day", col_wrap=7, height=4)
h.map(sns.lineplot, "date_UTC", "pm2_5_ugm3")

請注意,與您所說的最終想要的相比,將有一條曲線。

在做了更多研究之后,似乎實現我想要的最好方法是使用 Seaborn 的 relplot,因為它結合了 lineplot 和 facetgrid。

暫無
暫無

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

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