2016-06-20 10 views
0

Ich modifizierte Mike Bostock Pie Chart Update III, um zwei verschiedene Kreisdiagramme in einem mit zwei Elementen mit einer CSV-Datei für jedes Diagramm zu erhalten.Mehrere Kreisdiagramme aktualisieren mit nur einem Eingang d3.js

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

var leftG = svg.append("g") 
       .attr("transform", "translate(" + width/4 + "," + height/2 + ")"); 

var rightG = svg.append("g") 
       .attr("transform", "translate(" + 3 * (width/4) + "," + height/2 + ")"); 

Ich möchte jeden Radiobutton haben beide Tortendiagramme zu aktualisieren. Jetzt ist mein Problem, dass die Update-Eingaben nur das zweite Tortendiagramm ändern.

Ich kann nicht herausfinden, wie dies zu tun ist, da die Funktion change() innerhalb der Funktion d3.csv() ist und man nicht auf die andere zugreifen kann.

d3.selectAll("input") 
    .on("change", changeLeft); 

    function changeLeft() { 
    var value = this.value; 
    pieLeft.value(function(d) { return d[value]; }); // change the value function 
    pathLeft = pathLeft.data(pieLeft); // compute the new angles 
    pathLeft.transition().duration(750).attrTween("d", arcTween); // redraw the arcs 
    } 

Vielen Dank im Voraus.

EDIT: Hier ist meine plnkr

+0

bitte teilen Sie Code durch Geige oder Jsbin –

+0

Ich habe meinen Code durch PLNKR – macdows

Antwort

0

erklären eine globale Variable

var changeLeft; 

Ersetzen Sie Ihre Funktion mit dem unten ein und es wird funktionieren:

changeLeft = function() { 
     var value = this.value; 
     pieLeft.value(function(d) { return d[value]; }); // change the value function 
     pathLeft = pathLeft.data(pieLeft); // compute the new angles 
     pathLeft.transition().duration(750).attrTween("d", arcTween); // redraw the arcs 
     } 
+0

Ich habe diesen Ansatz versucht, aber es tut Es funktioniert nicht (wenn ich es richtig verstanden habe), bekomme ich den Fehler 'pathLeft is not defined', weil die Funktion global ist und der Pfad außerhalb der Funktion d3.csv() nicht erkannt wird. – macdows

+0

Nun, ich habe versucht, auf Ihrem PLNKR funktioniert es oben wo immer Sie undefined für Sie müssen den Umfang alle betroffenen Entitäten erhöhen – SiddP

+0

Ich verstehe es nicht, wo haben Sie Ihre Funktion deklariert? Würde es Ihnen etwas ausmachen, das PLNKR zu aktualisieren, um es mir zu zeigen? – macdows