2015-04-29 115 views
0

我正在使用以下代碼使用d3.scale.category10()獲取不同的顏色。這裏是我的代碼:從javascript函數獲取相同的值

function getDrawColor(i) 
{ 
    var colors = d3.scale.category10(); 
// for(var j=0;j<5;j++) 
// { 
//  alert(colors(j)); 
// } 
      return colors(i); 
} 

當我嘗試使用註釋循環打印顏色,我得到不同的不同顏色。但是當我用不同的i值調用這個方法時,無論i的值如何,我都會得到相同的顏色(即顏色(0))。我印的是我的價值,但沒有問題,我總是得到第一種顏色。

回答

-1

看看這個鏈接,它也許可以幫助您:http://www.jeromecukier.net/blog/2011/08/11/d3-scales-and-color/

本節可以幫助你:

調色板

不像protovis,這讓他們在pv.Colors - 即光伏.Colors.category10(),在d3中,內置調色板可以通過縮放訪問。那麼,即使在原型中,他們一直都是序級,只是沒有這樣調用。 protovis中有4種內置調色板:d3.scale.category10(),d3.scale.category20(),d3.scale.category20b()和d3.scale.category20c()。

像d3.scale.category10()這樣的調色板的工作方式與序數標度完全相同。

var p=d3.scale.category10(); 
var r=p.range(); // ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", 
        // "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf"] 
var s=d3.scale.ordinal().range(r); 
p.domain(); // [] - empty 
s.domain(); // [] - empty, see above 
p(0); // "#1f77b4" 
p(1); // "#ff7f0e" 
p(2); // "#2ca02c" 
p.domain(); // [0,1,2]; 
s(0); // "#1f77b4" 
s(1); // "#ff7f0e" 
s(2); // "#2ca02c" 
s.domain(); // [0,1,2]; 

這是值得注意的是,D3,調色板返回字符串,而不是像pv.Color在protovis對象。 另外:

d3.scale.category10(1); // this doesn't work 
d3.scale.category10()(1); // this is the way. 
+0

雖然這個鏈接可能回答這個問題,最好在這裏包含答案的重要部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Jost

+0

添加了可能有用的部分。 –

1

聲明色彩全球,並用它get函數裏面像下面

var colors = d3.scale.category10(); 
function getDrawColor(i) 
{ 
    return colors(i); 
} 

希望這會爲你工作...

相關問題