2013-08-12 10 views
8

Ich versuche, einen Timer mit d3, die einen Gradienten hat, die zwischen 0 und 100% ändern wird erstellen. Zum Beispiel dunkelorange bei 0% und hellorange bei 100%. Ich kann den Lichtbogen zwischen dunkel und hellorange wechseln lassen, habe aber Probleme, etwas zu finden, was es mir erlaubt, einen Gradienten auf den Lichtbogen anzuwenden. Ein Beispiel für das, was ich versuche zu erreichen, ist im Bild unten zu sehen.D3 Bogen Gradient

enter image description here

gesucht/Braten mein Gehirn versucht, dies einen Tag oder so jetzt zu erreichen.

+1

Es gibt viele Fragen hier, wie Gradienten zu verwenden, mit SVG und D3 , z.B [this one] (http://stackoverflow.com/questions/12826604/how-to-use-svg-gradients-to-display-varying-colors-relative-to-the-size-of-the-c). Hilft dir keiner von denen? –

+1

Außerdem, neben dem, was @LarsKotthoff gesagt hat, solltest du ein Beispiel posten, das du versucht hast, dies zu entfernen, damit jeder von dort starten konnte. – Joum

Antwort

9

SVG erlaubt diese Art von Gradienten nicht. Ich habe schon etwas sehr ähnliches getan, ich habe einen „Donut-Plan“ erstellt, in dem jeder Keil eine andere Farbe ist:

http://jsfiddle.net/duopixel/GfVrK/

var arc, data, padding, steps = 2, r=400/2, pi = Math.PI; 
var padding = 2 * r/200; 
arc = d3.svg.arc() 
    .innerRadius(r-40) 
    .outerRadius(r).startAngle(function(d) { return d.startAngle; }) 
    .endAngle(function(d) { return d.endAngle; }); 

data = d3.range(180).map(function(d, i) { 
    i *= steps; 
    return { 
    startAngle: i * (pi/180), 
    endAngle: (i + 2) * (pi/180), 
    fill: d3.hsl(i, 1, .5).toString() 
    }; 
}); 

d3.select("#wheel") 
    .insert('svg', 'svg') 
    .attr("id", "icon") 
    .append('g') 
    .attr("transform", "translate(" + r + "," + r + ") rotate(90) scale(-1,1)") 
    .selectAll('path') 
     .data(data) 
     .enter() 
     .append('path').attr("d", arc) 
     .attr("stroke-width", 1) 
     .attr("stroke", function(d) { return d.fill;}) 
     .attr("fill", function(d) { return d.fill; }); 
+0

Das sieht gut aus ... + 1'd – Joum