绘制x轴点的更有效方法?

时间:2009-08-28 21:38:38

标签: ruby-on-rails graph dry median

我一直在研究一个需要用价格结果填充条形图的项目。该图表显示给定价格范围内的项目数。例如,如果在亚马逊上有价值范围为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?

1 个答案:

答案 0 :(得分:0)

您的垃圾箱总是大小相同吗?在您的示例中,所有共享范围= 10。如果是这样,那么你可以这样做:

binspacing = overall range / (numberofbins-1);

并且bin n的位置将是数字[0]的x轴位置加上binspacing的n倍。