我一直在研究一个需要用价格结果填充条形图的项目。该图表显示给定价格范围内的项目数。例如,如果在亚马逊上有价值范围为0到10美元的9个项目,则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;
然后我再重复这个过程
@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?
答案 0 :(得分:0)
您的垃圾箱总是大小相同吗?在您的示例中,所有共享范围= 10。如果是这样,那么你可以这样做:
binspacing = overall range / (numberofbins-1);
并且bin n的位置将是数字[0]的x轴位置加上binspacing的n倍。