2011-09-02 48 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();} 

希望這有助於!