如何设置g.raphaeljs饼图方向或起点?

时间:2013-01-17 11:34:50

标签: javascript svg raphael graphael

默认情况下,g.raphaeljs饼图显示从图表顶部沿两个方向均匀延伸的最大值,顺时针方向显示较小的值。

在下图中,最大值(1)从大约7点开始。我希望从12点开始显示最大的价值,怎么办呢?

Default behaviour Target behaviour

2 个答案:

答案 0 :(得分:6)

好的,找到它(并且它可以100%)......在这里:Added opts.startFromFixedAngle, so the 1st pie-slice will start paint…

Here is a working jsfiddle I just did : g raphael pie with starting angle set to 90

不要忘记使用新参数startFromFixedAngle

这是代码......

将以下内容应用到g.pie.js

替换

 angle = 0,

 angle = opts.startFromFixedAngle || 0,

除去

 var mangle = angle - 360 * values[i] / total / 2;
 if (!i) {
     angle = 90 - mangle;

添加

 var mangle;
 if (opts.startFromFixedAngle)
     mangle = angle + 360 * values[i] / total / 2;
 else {
     mangle = angle - 360 * values[i] / total / 2;
     if (!i) {
         angle = 90 - mangle;
         mangle = angle - 360 * values[i] / total / 2;
     }

答案 1 :(得分:3)

上面的解决方案过于复杂,并且会破坏任何依赖于mangle的动画效果(例如在此处找到的那个:RaphaelJs Pie Chart Animation on Hover)。如果您想要的只是一个固定的起始角度,那么单行更改就足够了,但如果您想使用上面的参数,则可以替换

     if (!i) {
       angle = 90 - mangle;
       mangle = angle - 360 * values[i] / total / 2;
     }

     if (!i) {
       if (opts.startFromFixedAngle) {
         angle = opts.startFromFixedAngle;
       } else {
         angle = 90 - mangle;
       }
       mangle = angle - 360 * values[i] / total / 2;
     }

在我的情况下,我只是希望所有饼图都以90度标记开始,所以我只是删除了#34; - mangle"来自第一个区块的代码。