绘制 seaborn 中分组箱线图均值的线图

时间:2021-03-12 06:25:56

标签: dataframe matplotlib pandas-groupby seaborn boxplot

def get_stats_array(dataframe, Method, Cases, stat='mean', round_off=1):
      mdf = dataframe
      pdp = mdf[mdf['smoker'] == Cases] 
      if stat == 'mean':
         means = pdp.groupby('day').mean()
         return round(means,round_off)
      elif stat == 'median':
         medians = pdp.groupby('day').median()
         return round(medians,round_off)
      elif stat == 'min':
         mins = pdp.groupby('day').min()
         return mins 
      elif stat == 'max':
         maxs = pdp.groupby('day').max()
         return maxs
      else:
         return None
import seaborn as sns
sns.set_theme(style="ticks", palette="icefire")
tips = sns.load_dataset("tips")
Mean_Yes = get_stats_array(tips, Method=None, Cases='Yes', stat='mean', round_off=1)['total_bill']
Mean_No = get_stats_array(tips, Method=None, Cases='No', stat='mean', round_off=1)['total_bill']


Mean_array_Thu = [Mean_Yes[0] , Mean_No[0]]
Mean_array_Fri = [Mean_Yes[1] , Mean_No[1]]
Mean_array_Sat = [Mean_Yes[2] , Mean_No[2]]
Mean_array_Sun = [Mean_Yes[3] , Mean_No[3]]
CASES = ['Yes','No']
qf1 = pd.DataFrame([Mean_array_Thu], columns=CASES).assign(day='Thur') 
qf2 = pd.DataFrame([Mean_array_Fri], columns=CASES).assign(day='Fri')  
qf3 = pd.DataFrame([Mean_array_Sat], columns=CASES).assign(day='Sat')  
qf4 = pd.DataFrame([Mean_array_Sun], columns=CASES).assign(day='Sun')  
pdf = pd.concat([qf1, qf2, qf3, qf4]) 
pdf = pd.melt(pdf, id_vars=['day'], var_name=['CASES'])    


plt.figure(1, figsize = (25,10))
ax = sns.boxplot(x="day", y="total_bill", hue="smoker", palette=["m", "g"], data=tips, showmeans=True)
sns.despine(offset=10, trim=True)
ax = sns.lineplot(x='day', y='value', data=pdf, style='CASES',ax=ax,color='black')

我试图绘制分组箱线图。我最初尝试使用 seaborn 中提供的示例。 (附代码)数据格式为熊猫数据帧。首先我绘制了箱线图,然后我尝试使用 groupby 选项获取每个组的平均值,但不知何故不起作用。所以我用平均值创建了另一个单独的数据框并尝试绘制它们。我能够得到每组均值的单独线图,但定位错误。我附上了结果图的图。我认为使用 groupby 选项可能有更好的方法来做到这一点,但我不确定如何。但主要是我希望得到的均值线图与均值和框正确对齐。谁能帮我这个?如果需要提供更多信息,请告诉我

分组箱线图和每组均值线图的对齐问题,如下图所示: enter image description here

0 个答案:

没有答案