我有两个箱图
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)
但我想将它们放在一个图表中进行比较。你有什么建议来解决这个问题吗?谢谢!
答案 0 :(得分: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)
答案 1 :(得分:3)
要在一个matplotlib图上绘制多个箱图,您可以将数据数组列表传递给boxplot,如:
import nump as np
import matplotlib.pyplot as plt
x1 = 10*np.random.random(100)
x = 10*np.random.exponential(0.5, 100)
x = 10*np.random.normal(0, 0.4, 100)
plt.boxplot ([x1, x2, x3])
唯一认为我不确定的是你是否希望每个箱图都有不同的颜色等。
答案 2 :(得分:0)
使用pandas
很容易:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
col1 = np.random.random(10)
col2 = np.random.random(10)
DF = pd.DataFrame({'col1': col1, 'col2': col2})
ax = DF[['col1', 'col2']].plot(kind='box', title='boxplot', showmeans=True)
plt.show()
请注意,为此使用 Pandas 时,最后一个命令 (ax = DF[[...
) 会打开一个新图形。我仍在寻找将其与现有子图结合的方法。