我想知道如何生成一组增加的条形图步骤,以便从非常小的步骤开始,然后增加到最大值。我有一个响应时间的直方图,它紧密地围绕平均值进行分组,然后通常具有10 x平均值的长尾。该图表将有20个步骤,前10个步骤很小,然后逐渐增加,直到达到最大值。什么纯蟒蛇公式可以实现这个目标?
图表小例子:Min = 0,max = 5,average = 0.032
0.00 **
0.01 ***
0.02 ****
0.03 *************
0.05 ******
0.08 ****
0.12 ***
0.30 **
1.20 *
2.00 *
3.20 *
5.00 *
答案 0 :(得分:0)
这是我的hacky代码来解决我的问题。欢迎改进。它从最大值开始,然后每个直方图图表桶减半,直到达到平均值的3倍。然后图表桶是剩余值范围的偶数部分,直到零。
# histogram 0 - max
bin_size = 20
bin_values = [0 for _ in range(bin_size+1)]
bin_max = 150
average = 0.236
bin_step = bin_max
bin_factor = 0.5
average_step_passed = False
for x in range(bin_size, 0, -1):
# print x, bin_step, bin_factor
bin_values[x] = bin_step
if not average_step_passed:
if average * 3 > bin_step:
bin_values[x] = average * 3
bin_factor = bin_step / x
average_step_passed = True
else:
bin_step = bin_step * bin_factor
else:
bin_values[x] = bin_factor * x
bin_values[0] = 0
这使得直方图如下(粗略地):
samples: 69328
average: 0.2607
max: 100.34
Distribution
000.000 0
000.060 696 ***
000.120 7275 *************************************
000.180 26811 **********************************************************
000.240 22364 ***************************************************
000.300 5766 *************************
000.360 2113 ********
000.420 1381 *****
000.480 1149 ***
000.540 513 **
000.600 326 *
000.660 255 *
000.720 245 *
000.820 616 ***
001.570 37
003.140 24
006.270 15
012.540 9
025.080 1
050.170 1