2014-06-18 3 views
1

d3.js 함수 내에서 함수를 사용할 수 있는지 궁금합니다. 은의 당신이 colorscaled3.js d3.js 관련 함수 내의 함수 사용

var colorScale = d3.scale.quantile() 
       .domain([0,8]) 
       .range(["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]); 

다음 작품을 만들 수있는 방법이 있나요 있다고 가정하자, 내 질문에 명확히하기 위해?

 var colorScale = d3.scale.quantile() 
      .domain([0,8]) 
      .range(function(){return ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]}); 

그래서 전체 인수를 함수에서 반환합니까?

많은 분들께 감사드립니다.

+0

목표를 명확히 할 수 있습니까? 당신이 준 예제에서 D3 스케일 대신 직접 자신의 함수를 사용하는 것이 더 합리적 임 – explunit

+0

이 질문에 대한 대답은 [API documentation] (https://github.com/mbostock/d3/wiki/Quantitative-Scales #quantile_range). –

답변

2

Explunit, Lars and Thomas

나는 내 질문에 대한 적절한 대답을 발견했다.

대답은 : 예이 가능하고 여기에 당신은 어떻게 당신의 범위 인수가 함수가 될 것입니다 알고있는 경우 :

var myfunction = function() 
     {return ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]} 

     var colorScale = d3.scale.quantile() 
       .domain([0,8]) 
       .range(myfunction()); 

당신이 확실하지 않은 그러나합니다. d3.functor()를 사용할 수 있습니다. d3.functor()는 함수가 아닌 값을 전달하더라도 작동합니다.

var myfunction = ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"] 

var myfunctionWrapped = d3.functor(myfunction); 

var colorScale = d3.scale.quantile() 
     .domain([0,8]) 
     .range(myfunctionWrapped()); 

그래서 나는 그 이후 d3.functor()를 사용하는 것이 좋습니다 것입니다 :

var myfunction = function() 
     {return ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]} 

     var myfunctionWrapped = d3.functor(myfunction); 

     var colorScale = d3.scale.quantile() 
       .domain([0,8]) 
       .range(myfunctionWrapped()); 

그리고 이런

그것이 값 (또는 배열) 인 경우 : (이 함수의 경우)이 같은 코드를보다 다양하게 만듭니다.

1

범위가 없습니다. 다른 많은 d3 메소드가 함수를 매개 변수로 허용하지만. 그것들은 일반적으로 특정 데이텀을 기반으로 다른 값을 반환 할 가능성이있는 메소드입니다.