2011-09-02 59 views

回答

6

这里有你想要的东西(更新Fiddle)。

您正在创建新的条形图的正确轨道上。唯一的问题是,你不想“显示”该条形图,但是你想用它的条形图进行动画。虽然这确实产生了一个我们后来抛弃的新图(使用remove()),但它似乎是拉斐尔的最佳实践。

function b_animate(){ 
    //First, create a new bar chart 
    var c2 = bars.g.barchart(200, 0, 300, 400, [bdata], {stacked: false, colors:["#999","#333","#666"]}); 

    //Then for each bar in our chart (c), animate to our new chart's path (c2) 
    $.each(c.bars[0], function(k, v) { 
    v.animate({ path: c2.bars[0][k].attr("path") }, 200); 
    v.value[0] = bdata[k][0]; 
    }); 

    //Now remove the new chart 
    c2.remove(); 
} 

这是不完整的,因为我们还没有动画的传说,以匹配新的图表,但适用于标签这种技术应该让你那里。基本上,我们需要重新映射悬停以显示新标签(并删除旧标签)。

希望这应该像你希望的那样工作。如果您有任何问题,请告诉我。请享用!

+0

感谢,似乎这样做! – circlecube

+1

我做了一个新的小提琴与g.Raphael 0.5(http://jsfiddle.net/MVwwq/86/) –

+0

@ ghayes小提琴不起作用:( – Muhammed

0

我不得不去适应上面的代码得到这个与拉斐尔2.1.0和g.Raphael 0.51和JQuery 1.9.1工作:

function b_animate(){ 
var c2 = bars.barchart(10, 10, 500, 450, bdata, { colors:custom_colors}); 
$.each(c.bars, function(k, v) { 
    v.animate({ path: c2.bars[k][0].attr("path") }, 500); 
    v[0].value = bdata[k][0]; 
}); 
c2.remove();} 

希望这有助于!