[英]seaborn lineplot shows wrong legend
我有一個 pandas dataframe 格式如下:
TEILNR VALUE date
351 10 2019-01-01
833 20 2019-01-01
...
351 40 2020-05-01
它具有dtypes:
TEILNR object
VALUE int64
date object
當我使用以下命令進行繪圖時:
sns.set(style="whitegrid")
plt.figure(figsize=(12,10))
sns.lineplot(x= 'date', y='value', hue='TEILNR', ci=None,
data=df, lw=1)
plt.legend(bbox_to_anchor=(1.04,1), loc="upper left")
plt.xticks(rotation=45)
plt.show()
我得到以下 output:
我對傳說感到困惑,這是否應該尊重我的TEILNR
列的值? 為什么沒有 351 或 833?
您需要將其顯式轉換為分類:
DATE = pd.date_range('2020-01-01', periods=8, freq='M')
df = pd.DataFrame({'TEILNR':np.repeat(['351','833'],8),
'value':np.random.normal(0,1,16),
'date':pd.concat([pd.Series(DATE),pd.Series(DATE)])})
df.dtypes
TEILNR object
value float64
date datetime64[ns]
dtype: object
我 plot 並排了兩種不同的類型,您可以看到一旦將 TEILNR 轉換為分類,plot 是正確的,其中色調將其視為分類:
fig, ax = plt.subplots(1,2,figsize = (10,4))
sns.set(style="whitegrid")
sns.lineplot(x= 'date', y='value', hue='TEILNR', ci=None,data=df, lw=1,ax=ax[0])
df['TEILNR'] = df['TEILNR'].astype('category')
sns.lineplot(x= 'date', y='value', hue='TEILNR', ci=None,data=df, lw=1,ax=ax[1])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.