2013-01-13 27 views
2

考慮:g.Raphael餅圖排序圖表數據,沒有顏色,網址

value1 = 5; 
v1_color = #ff0000; 

value2 = 4; 
v2_color = #00ff00; 

value3 = 3; 
v3_color = #0000ff; 

var r = Raphael("holder"); 
pie = r.piechart(320,320,250,{value1,value2,value3},{colors: [v1_color, v2_color,v3_color]}); 

這將產生一個餅圖,其中上片是紅色的,在右下角的片是綠色,最後切片是藍色的。然而,如果值被改變這樣的:

value1 = 4; 
value2 = 3; 
value3 = 5; 

圖表看起來一模一樣,但顏色將不再代表應有的價值。在source code中,第99-101行顯示了正在排序的值,但沒有其他值。

我想要一個顏色對應某個變量,不管它有多大,而不是獲取選項中列出的第一個顏色的最大變量。

在繪製切片的代碼部分(第133行)中,它指的是opts.matchColors,但在調用函數時找不到有關如何設置的任何文檔。

任何想法如何實現這一目標?

回答

7

不幸的是opts.matchColors根本沒有記錄,因爲它正是你需要的。

opts.matchColors強制它將colors數組的順序與values數組的順序相匹配。當值按大小重新排序時,顏色將以其原始值應用於楔形。

matchColors默認爲false,所以你需要明確設置的選項數組像這樣:

 
var pie = r.piechart(320, 320, // center 
        250,  // radius 
        [ 
         value1, 
         value2, 
         value3 
        ], 
        { 
         colors  : [ 
              v1_color, 
              v2_color, 
              v3_color 
             ], 
          matchColors : true 
        }); 
+0

啊,這做的伎倆!後見之明。謝謝你的幫助。 :) – whlteXbread

+0

謝謝答案的人,出於好奇,但你在哪裏找到這種方法?你看過他們的代碼什麼的? – tmaster

+1

@tmaster是的!我爲一個項目廣泛使用g.raphael,所以我對代碼非常熟悉。我弄清楚OP引用的行是什麼,然後測試了我的理論。當我有機會時,我想更新這樣的文檔,因爲不幸的是,它不再被經常維護。 – sacohe