2012-06-03 59 views
1

我有一個拉斐爾餅圖的問題。我使用的數據是動態的,在某些情況下,只返回1個值,這意味着整個圖表被填充,因爲它是唯一的切片。問題是,只有1個值時,它會忽略我的顏色指定。raphael餅圖總是藍色,當只有1個值(如何設置一個餅的餅圖的顏色)

例如:下面是一個2個值的拉斐爾餅圖的創作,每片有「顏色」部分中指定適當的顏色:

var r = Raphael("holder"); 
r.piechart(160, 136, 120, [100,200],{colors: ["#000","#cecece"]}); 

這工作得很好,我得到兩個大小合適的切片,一個黑色和一個灰色。

但是下面的例子會創建一個完整的餅圖,不管我的顏色設置如何,總是填充藍色。

var r = Raphael("holder"); 
r.piechart(160, 136, 120, [100],{colors: ["#000"]}); 

在這種情況下,我真的很需要那充滿餡餅是黑色的,因爲它是在「顏色」設置

我做得不對,或者這是一個錯誤?

回答

2

INMO其錯誤的原因時,派了上只有一個片的顏色是硬編碼...

這是我如何解決它(我所做的是,如果它存在使用colors參數...)

g.pie.js

線47後添加此

var my_color = chartinst.colors[0]; 
if(opts.colors !== undefined){ 
    my_color = opts.colors[0]; 
} 

然後在下面的行中(原始js文件48行)

series.push(paper.circle(cx, cy, r).attr({ fill: chartinst.colors[0].... 

更換chartinst.colors[0]my_color

這對我來說

if (len == 1) { 
     var my_color = chartinst.colors[0]; 
     if(opts.colors !== undefined){ 
      my_color = opts.colors[0]; 
     } 
     series.push(paper.circle(cx, cy, r).attr({ fill: my_color, .... 
0

你可能已經想出了你自己的問題,因爲這個問題已經過時了......但是你可以「欺騙」Raphael通過一個特殊套管數據集渲染一個黑色單元來添加一個無限小的第二個值。因此,考慮到陣列的數據與您的數據點......

if (data.length == 1) 
    data.push(0.000001); 

canvas.piechart(250, 250, 120, data, {colors: ["#000", "#CECECE", "#F88" /*, ... */ ] }); 

的非常小的一部分仍將呈現爲在180度的位置上的單像素線,但你也許可以矇混過關,通過與您的色彩玩調色板。

是的,這是一個騙局。我不相信gRaphael的行爲是錯誤的,而且執行得不好(單元素數據集顯然是特殊的,因爲它們在所有其他情況下會產生一個圓而不是路徑)。

0

簡單的方法,而不編輯g.pie.js

var r = Raphael('st_diagram'); 

r.piechart(140, 140, 137, 100, 0.0001],{ 

     colors:['#9ae013','#9ae013'], 
     strokewidth: 0 
    });