2017-08-02 1 views
1

Versuch rect Farben auf einem Balkendiagramm durch eine Skala,d3.js fit Skala rgb() Bereich der blauen

var x1 = d3.scaleTime() 
    .domain([parseTime('00:00'), d3.max(data, function(d) { 
     return d.value 
    })]) 
    .range([2, 256]); 

so zu füllen,

.style('fill', function(d) { 
      return "'rgb(0,0," + x1(d.value) + ")'" 
     }) 

versuchen zu über reichen die Farbe blau auf der Skala d.value

Ich werde im Moment schwarz, vermutlich eine Standardfarbe.

Dank

Antwort

1

Sie diese vereinfachen, können d3 Skalen zwischen den Farben interpolieren, so dass Sie Code wie verwenden:

var x1 = d3.scaleLinear() 
    .domain([0,100]]) 
    .range(["black","blue"]); 

Und dann:

var x1 = d3.scaleLinear() 
    .domain([0,100]]) 
    .range(["#000000","#0000ff"]); 

Sie auch nutzen könnten Verwenden Sie die Skala, um die Rechtecke direkt zu färben:

.style('fill', function(d) { 
      return x1(d.value); 
     }) 

Auch, ja, schwarz ist die Standardfarbe. Aus Gründen der Demonstration im Snippet, ich bin mit einem linear statt Datumsskala:

var svg = d3.select("body") 
 
    .append("svg") 
 
    .attr("width",500) 
 
    .attr("height",200); 
 

 
var x1 = d3.scaleLinear() 
 
    .domain([0,100]) 
 
    .range(["#000000","#0000ff"]); 
 

 
var x2 = d3.scaleLinear() 
 
    .domain([0,100]) 
 
    .range(["orange","steelblue"]); 
 
     
 
var rects = svg.selectAll(null) 
 
    .data(d3.range(100)) 
 
    .enter() 
 
    .append("rect") 
 
    .attr("fill",function(d) { return x1(d); }) 
 
    .attr("width",10) 
 
    .attr("height",10) 
 
    .attr("y",function(d) { return Math.floor(d/10) * 12; }) 
 
    .attr("x",function(d) { return d % 10 * 12; }) 
 

 
var rects = svg.selectAll("null") 
 
    .data(d3.range(100)) 
 
    .enter() 
 
    .append("rect") 
 
    .attr("fill",function(d) { return x2(d); }) 
 
    .attr("width",10) 
 
    .attr("height",10) 
 
    .attr("y",function(d) { return Math.floor(d/10) * 12; }) 
 
    .attr("x",function(d) { return d % 10 * 12 + 130 ; })
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.10.0/d3.min.js"></script>

+0

Danke für die schnelle und umfassende Antwort. Ich brauche Zeit, um damit zu spielen. –

+0

Ja das ist genau das, wenn ich .style ('fill', function (d) {return d.value}) gebe, nimmt diesen Farbbereich und setzt sie entsprechend dem d.value. Perfekt, danke –

Verwandte Themen