【问题标题】:More efficient way to plot x-axis points?绘制 x 轴点的更有效方法?
【发布时间】:2009-08-28 21:38:38
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails graph dry median


    【解决方案1】:

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

    binspacing = overall range / (numberofbins-1);
    

    bin n 的位置是 numbers[0] 的 x 轴位置加上 binspacing 的 n 倍。

    【讨论】:

    • 如果目标是编写尽可能复杂的代码,也许我的方式会更好......谢谢。
    • 这是否意味着我的回答符合您的目的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多