【问题标题】:Grouped boxplot分组箱线图
【发布时间】:2020-05-22 04:34:52
【问题描述】:

这是我当前的代码,我想在我的箱线图中对数据进行分组,而不是为所有指定的数据分组。另外,如何旋转 xtick 标签?

plt.figure(figsize=(12,8), dpi=100)

plt.style.use('default')
plt.setp(ax.get_xticklabels(), rotation = 90)

compressor_room_temperature = df1['Compressor Room Temperature']
compressor_outlet_temperature = df1['Compressor Outlet Temperature']
compressor_inlet_temperature = df1['Compressor Inlet Temperature']
aircon_outlet_temperature = df1['Aircon Outlet Temperature']
compressor_room_temperature2 = df2['Compressor Room Temperature']
compressor_outlet_temperature2 = df2['Compressor Outlet Temperature']
compressor_inlet_temperature2 = df2['Compressor Inlet Temperature']
aircon_outlet_temperature2 = df2['Aircon Outlet Temperature']
compressor_room_temperature3 = df3['Compressor Room Temperature']
compressor_outlet_temperature3 = df3['Compressor Outlet Temperature']
compressor_inlet_temperature3 = df3['Compressor Inlet Temperature']
aircon_outlet_temperature3 = df3['Aircon Outlet Temperature']

bp = plt.boxplot([compressor_room_temperature, compressor_outlet_temperature, compressor_inlet_temperature, aircon_outlet_temperature, compressor_room_temperature2, compressor_outlet_temperature2, compressor_inlet_temperature2, aircon_outlet_temperature2, compressor_room_temperature3, compressor_outlet_temperature3, compressor_inlet_temperature3, aircon_outlet_temperature3], labels=['Compressor Room Temperature','Compressor Outlet Temperature','Compressor Inlet Temperature','Aircon Outlet Temperature','Compressor Room Temperature2','Compressor Outlet Temperature2','Compressor Inlet Temperature2','Aircon Outlet Temperature2','Compressor Room Temperature3','Compressor Outlet Temperature3','Compressor Inlet Temperature3','Aircon Outlet Temperature3'], patch_artist=True, medianprops={'linewidth': 2})
# plt.setp(ax.get_xticklabels(),rotation=45)
plt.title('Analyzing Temperature Data from Sensors placed across an Aircon system')
plt.ylabel('Temperature')


for box in bp['boxes']:
    box.set(color='#4286f4', linewidth=2)
    box.set(facecolor = '#e0e0e0' )

plt.show()

我目前的箱线图

基本上,我希望我的箱线图如下所示

【问题讨论】:

    标签: python dataframe matplotlib


    【解决方案1】:

    一种简单的方法是创建 3 个轴之间没有空格,并将每个数据框绘制在各自的轴上

    label1 = 'dataset 1'
    label2 = 'dataset 2'
    label3 = 'dataset 3'
    df1 = pd.DataFrame({'Compressor Room Temperature': np.random.normal(loc=10, size=(100,)),
                        'Compressor Outlet Temperature': np.random.normal(loc=10, size=(100,)),
                        'Compressor Inlet Temperature':np.random.normal(loc=10, size=(100,)),
                        'Aircon Outlet Temperature':np.random.normal(loc=10, size=(100,))
                       })
    df2 = pd.DataFrame({'Compressor Room Temperature': np.random.normal(loc=5, size=(100,)),
                        'Compressor Outlet Temperature': np.random.normal(loc=5, size=(100,)),
                        'Compressor Inlet Temperature':np.random.normal(loc=5, size=(100,)),
                        'Aircon Outlet Temperature':np.random.normal(loc=5, size=(100,))
                       })
    df3 = pd.DataFrame({'Compressor Room Temperature': np.random.normal(loc=15, size=(100,)),
                        'Compressor Outlet Temperature': np.random.normal(loc=15, size=(100,)),
                        'Compressor Inlet Temperature':np.random.normal(loc=15, size=(100,)),
                        'Aircon Outlet Temperature':np.random.normal(loc=15, size=(100,))
                       })
    
    
    fig, axs = plt.subplots(1,3, gridspec_kw=dict(wspace=0), sharey=True)
    
    for ax,df,label in zip(axs,[df1,df2,df3],[label1, label2, label3]):
        ax.boxplot(df.T)
        ax.set_xticklabels(df.columns, rotation='90')
        ax.set_xlabel(label)
    
    fig.tight_layout()
    

    【讨论】:

    • 对不起,我链接了错误的图像,但我会尝试弄清楚如何编辑代码以实现我想要的效果
    • @Yvonne 一个想法是使用'Compressor\nRoom Temperature' 作为列名来在两行上绘制 x-tick-labels。
    猜你喜欢
    • 2021-08-28
    • 2016-09-14
    • 2013-05-11
    • 2021-03-08
    • 1970-01-01
    • 2021-09-08
    • 2020-08-03
    • 2019-04-29
    • 2016-01-26
    相关资源
    最近更新 更多