我一直在做一个需要用价格结果填充条形图的项目。该图表显示给定价格范围内的商品数量。例如,如果亚马逊上有 9 件商品的价格范围在 0 美元到 10 美元之间,那么 x 轴将显示 0 美元到 10 美元,而 y 轴将填充值 9。
我的条形图有 8 个条形图,均具有相似的价格范围。0-10 美元、10-20 美元、20-30 美元……等等。
我的问题是:定义这些点的最佳方法是什么?这些项目之间没有共同的价格范围,因此x 轴不能是静态数字。它们必须在结果范围内动态计算。
因此,目前我正在创建 x 轴点,如下所示:
我取最低的结果:
@numbers[0] = results[0];
我拿了最高的结果:
@numbers[8] = results[-1];
然后我找到两者的中位数: @numbers[4] = (@numbers[0]+@numbers[8])/2;
然后我再重复这个过程 6 次
@numbers[2] = (@numbers[0]+@numbers[4])/2; @numbers[6] = (@numbers[4]+@numbers[8])/2; @numbers[1] = (@numbers[0]+@numbers[2])/2; @numbers[3] = (@numbers[2]+@numbers[4])/2; @numbers[5] = (@numbers[4]+@numbers[6])/2; @numbers[7] = (@numbers[6]+@numbers[8])/2;
这给了我我需要的结果,但它似乎非常重复,我想有更好的方法。
我尝试创建一个循环,但我无法以一种不那么冗长的方式编写它。
有没有更快的方法来做到这一点,或者可能是更符合 DRY 的方法?