gRaphael barchart:限制条形数和排序值

时间:2012-10-17 10:45:05

标签: graphael

我可以有一个条形图限制条形数量,例如gRaphael饼图只接受10个扇区,剩下的就是“OTHER”,不到总方式的10%,gRaphael条形图只有10个条形图剩下的就是“其他”?

谢谢, Mythyili

1 个答案:

答案 0 :(得分:1)

目前这不是g.bar类中的一个选项,因此您可能需要更新源代码才能实现此目的。

在看了他们对g.pie.js中“其他”片段所做的事情之后,我会推荐这个:

  • 为属性数组添加一个名为“maxbars”的选项。传入此选项时,这将是图表上显示的最大条形数。如果maxbars = 10并且有超过10个段,则1到9将是唯一的,10将是第10个到最后的组合。
  • 由于它们如何处理values数组,我认为最好的解决方案是在第一次访问它之前覆盖该值数组。在vbarchart和hbarchart中,在图表元素初始化之后,你应该添加一个看起来像这样的for循环:

    if (values.length > opts.maxbars) {
        for (var i = maxbars; i < values.length; i++) {
            values[maxbars-1] += values[i];
            values[i] = null;
        }
    }
    

    这是将第10个(例如)元素之后的所有值添加到第10个元素并清除数组中的其余插槽。现在你拥有的是10个元素的数组,第10个元素是第10个元素的总和。请注意,在这个简单的循环中,我只考虑了每个值不是数组的情况。您需要检查值[i] [j]并添加这些元素而不是值[i],这可能需要嵌套的for循环或三元运算符。查看g.bar的其余部分,看看如何在其他地方处理。

  • 在代码中绘制标签的部分,您可能希望在循环中添加一个检查     if(opts.maxbars&amp;&amp;(i == opts.maxbars - 1)){         //用“OTHER”标记栏     }

抱歉,我没有任何实际的工作代码来实现这一点,但它会涉及更多并且需要一些试验和错误。希望这能指出你正确的方向。