是否有一种使用Python Matplotlib在分组箱图上显示样本大小的好方法

我可以使用groupby获取大小信息并将文本添加到相应的位置.但我不禁想到有更好的方法,因为这看起来很平凡,很多人都希望看到……

为了说明,以下代码生成分组的Boxplot

import pandas as pd
df = pd.DataFrame(rand(100,1),columns=['value'])
df.ix[:23,'class']='A'
df.ix[24:,'class']='B'
df.Boxplot(column='value',by='class')

我想要的是显示每个A类和B类的样本大小,分别为24和76.它可能看起来像传说或在盒子附近的某个地方,或者对我来说是好的.

谢谢!

解决方法

n在班级标签中.我尝试过它作为一个传奇,但我不认为它是如此清晰. R有更多的Boxplot选项,包括使盒子的宽度与样本大小成比例;不是matplotlib中的认值,但很容易看起来真可读:

import pandas as pd
from numpy.random import rand,randint

df = pd.DataFrame(rand(100,columns=['value'])

cut1 = randint(2,47)
cut2 = randint(52,97)
df.ix[:cut1,'class']='A'
df.ix[cut1+1:cut2,'class']='B'
df.ix[cut2+1:,'class'] = 'C'

dfg = df.groupby('class')

counts = [len(v) for k,v in dfg]
total = float(sum(counts))
cases = len(counts)

widths = [c/total for c in counts]  

cax = df.Boxplot(column='value',by='class',widths=widths)
cax.set_xticklabels(['%s\n$n$=%d'%(k,len(v)) for k,v in dfg])

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...