def compute_group(cls, data, scales, **params):
bins = params['bins']
breaks = params['breaks']
binwidth = params['binwidth']
boundary = params['boundary']
func = make_summary_fun(params['fun_data'], params['fun_y'],
params['fun_ymin'], params['fun_ymax'],
params['fun_args'])
breaks = fuzzybreaks(scales.x, breaks, boundary, binwidth, bins)
data['bin'] = pd.cut(data['x'], bins=breaks, labels=False,
include_lowest=True)
def func_wrapper(data):
"""
Add `bin` column to each summary result.
"""
result = func(data)
result['bin'] = data['bin'].iloc[0]
return result
# This is a plyr::ddply
out = groupby_apply(data, 'bin', func_wrapper)
centers = (breaks[:-1] + breaks[1:]) * 0.5
bin_centers = centers[out['bin'].values]
out['x'] = bin_centers
out['bin'] += 1
if isinstance(scales.x, scale_discrete):
out['width'] = 0.9
else:
out['width'] = np.diff(breaks)[bins-1]
return out
评论列表
文章目录