簡體   English   中英

疊加箱線圖和線圖 seaborn

[英]Overlaying box plot and line plot seaborn

我試圖在同一個箱線圖上疊加一個箱線圖(一系列基於另一個變量的箱線圖)和一個該變量中位數的線圖。 像下面這樣的簡單代碼工作得很好。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

dfx=pd.DataFrame({'S':np.random.randint(10,100,9)*10,'C': 
['X','X','X','Y','Y','Y','Z','Z','Z']})

fig,ax=plt.subplots()
mx=dfx.groupby('C')['S'].median()
sns.boxplot(y='S',x='C',data=dfx,ax=ax)
sns.lineplot(y=mx.values,x=mx.index,ax=ax)
plt.show()

這使

在此處輸入圖片說明

但是,當我對從 csv 文件讀取的數據使用相同的代碼時,我只是無法將線圖與箱線圖一起顯示。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

df=pd.read_csv('test.csv')
fig,ax=plt.subplots()
m=df.groupby('Start Date')['Score'].median()
sns.boxplot(y='Score',x='Start Date',data=df,ax=ax)
sns.lineplot(y=m.values,x=m.index,ax=ax)
plt.show()

給這個在此處輸入圖片說明

lineplot 命令是在 boxplot 之前還是在 boxplot 之后並不重要,只顯示 box plot。 僅當 boxplot 行被注釋掉時,我才會看到該行。

我不明白我從 csv 讀取的數據有什么不同,我無法覆蓋線和框

PS:我知道一個簡單的解決方法是用 matplotlib line 命令替換 seaborn lineplot 行

ax.plot(m.values,'r-o',linewidth=4)

它給出了想要的結果:

在此處輸入圖片說明

我只是好奇為什么 seaborn lineplot 的行為方式如此。

我遇到了類似的問題,我通過將日期時間列轉換為字符串來“解決它”。

df_median.date = df_median.date.astype(str)
df_aux.date = df_aux.date.astype(str)

sns.set()


ax = sns.stripplot('date',
                  'value',
                  data=df_aux)

ax = sns.lineplot('date',
                  'value',
                  data=df_median,
                  ax=ax)
plt.xlabel("month")
plt.ylabel("values")
labels = ax.axes.get_xticklabels()
ax.axes.set_xticklabels(labels, rotation=45)

plt.show()

在此處輸入圖片說明

暫無
暫無

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

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