[英]Coloring a part of a time series plot in seaborn
基於包含兩列的 dataframe,一列帶有日期和時間,一列帶有價格值,我得到以下圖:
import seaborn as sns
# Use seaborn style defaults and set the default figure size
sns.set(rc={'figure.figsize':(20, 7)})
df['value'].plot(linewidth=0.5);
cols_plot = ['value']
axes = df[cols_plot].plot(marker='.', alpha=0.5, linestyle='None', figsize=(20, 7), subplots=True)
for ax in axes:
ax.set_ylabel('Price')
我想為圖表的一部分(即 7 天)使用不同的顏色。 我首先嘗試使用標記,但屬性.axvline
不起作用。 我知道通常使用plt.plot
之類的東西,其中有指定間隔和顏色的參數,但就我而言,我有一個數組。 不是 plot。
編輯:這是數據數組的示例:
+-----------------------------------+------------+
| Start Value |
+-----------------------------------+------------+
08.06.2019 08:00 33
08.06.2019 09:00 65
08.07.2019 08:00 45
08.07.2019 09:00 57
08.08.2019 08:00 52
+-----------------------------------+------------+
我只想為跨越 7 月的圖表着色。
我不確定我是否理解了你的問題,所以我將以 go 為例:
import matplotlib.pyplot as plt
t=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a=[10, 50, 100, 40, 20, 10, 80, 50, 78, 41]
plt.plot(t[0:5], a[0:5], color='red')
plt.plot(t[6:10], a[6:10], color='blue')
你想做類似的事情嗎?
編輯:
嗨對不起久等了
因此,我假設您有兩個變量,一個包含 valeus,另一個包含日期。 Personnaly,我去了類似的東西:
date = ['08.06.2019', '08.06.2019', '08.07.2019', '08.07.2019', '08.08.2019']
value = [33, 65, 45, 57, 52]
t =[]
a=[]
for i in range(len(date)):
t.append(date[i].split("."))
for i in range(len(t)):
a.append(int(t[i][1]))
plt.xticks((6, 7, 8), ('08.06.2019', '08.07.2019', '08.08.2019'))
for i in range(len(a)):
if a[i] == 7 :
plt.scatter(a[i], value[i], color = "red")
else :
plt.scatter(a[i], value[i], color ="blue")
它允許您顯示散點圖 plot,如果您想要帶有線條的 plot,您可以從中獲得靈感! 希望能幫助到你 !
你可以先 plot 一個正常的時間序列 plot
fig = plt.figure(figsize=(15,4))
ax1=plt.subplot(121)
sns.lineplot(x="Date", y="Value", data=df, ax=ax1) # plot normal time series plot
ax1.xaxis.set_major_formatter(mdates.DateFormatter("%b-%Y")) # change to nicer date format
然后 plot 只是將感興趣的區域覆蓋在正常時間序列 plot 之上。
# plot subset on top of the normal time series
sns.lineplot(x="Date", y="Value",
data=df[(df['Date'] > '2018-11-30') & (df['Date'] < '2019-01-01')],
color='green', ax=ax1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.