2015-04-29 83 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); 
} 

希望这会为你工作...

相关问题