我计算多索引DataFrame中几个索引的均值和stdev:
gp = df['measure'].groupby(level=('week', 'day', 'Inj'))
means = gp.mean()
errors = gp.std()
print means
week day Inj
35 0 PBS 32.583333
mPFFs 50.000000
1 PBS 7.833333
mPFFs 11.000000
2 PBS 8.083333
mPFFs 10.777778
3 PBS 5.166667
mPFFs 20.555556
37 0 PBS 16.666667
mPFFs -3.333333
1 PBS 4.833333
mPFFs 26.444444
...
我希望根据('week', 'day', 'Inj')
绘制这些均值/误差线,并将原始数据分散绘制在顶部。到目前为止,我已经得到了这个:
# this is just for error bars, so set box alpha=0
ax = means.plot.bar(yerr=errors, alpha=0)
X = ax.xaxis.get_majorticklocs()
for x, ((w, d, inj), newdf) in zip(X, gp):
y = newdf
_x = np.random.normal(x, 0.05, size=len(y))
plt.scatter(_x, y)
plt.ylabel('time latency (s)')
我的问题是,很难看到不同的群组,因为来自means.plot.bar
的小节是等距的。
有没有办法改善间距,以便天数之间存在小的差距,并且周数之间的差距会更大?
对于如何使用绘图工具可视化此数据,我们可以提供其他建议。