在pandas或matplotlib中的一个图中绘制多个boxplot?

Shi*_*hin 7 python matplotlib pandas

我有两个箱形图

a1=a[['kCH4_sync','week_days']]
a1.boxplot(by = 'week_days', meanline=True, showmeans=True, showcaps=True, showbox=True,            
                 showfliers=False)
a2=a[['CH4_sync','week_days']]
a2.boxplot(by = 'week_days', meanline=True, showmeans=True, showcaps=True, showbox=True,     
                 showfliers=False)
Run Code Online (Sandbox Code Playgroud)

但我想将它们放在一个图表中进行比较.你有什么建议来解决这个问题吗?谢谢!

rho*_*ody 12

要在一个 matplotlib 图上绘制多个箱线图,您可以将数据数组列表传递给箱线图,如下所示:

import numpy as np
import matplotlib.pyplot as plt

x1 = 10*np.random.random(100)
x2 = 10*np.random.exponential(0.5, 100)
x3 = 10*np.random.normal(0, 0.4, 100)
plt.boxplot ([x1, x2, x3])
Run Code Online (Sandbox Code Playgroud)

我唯一不确定的是,如果您希望每个箱线图具有不同的颜色等。通常它不会以不同的颜色绘制


unu*_*tbu 5

使用return_type='axes'得到a1.boxplot返回一个matplotlib Axes对象.然后将那些轴传递给第二次boxplot使用调用ax=ax.这将导致两个箱图在同一轴上绘制.

a1=a[['kCH4_sync','week_days']]
ax = a1.boxplot(by='week_days', meanline=True, showmeans=True, showcaps=True, 
                showbox=True, showfliers=False, return_type='axes')
a2 = a[['CH4_sync','week_days']]
a2.boxplot(by='week_days', meanline=True, showmeans=True, showcaps=True, 
           showbox=True, showfliers=False, ax=ax)
Run Code Online (Sandbox Code Playgroud)