2012-04-10 18 views
4

Ich mache eine datengesteuerte Visualisierung mit d3. Ich habe eine Struktur ähnlich der Sunburst (aber mit einer einzigen Schicht, eine Art Kreisdiagramm mit einem Loch in der Mitte).Transitioning sunburst in D3.js

Durch Klicken auf den Pfeil auf der Tastatur ändert sich die Daten visualisiert und so macht es den Sunburst. Insbesondere ändert sich der innerRadius in Abhängigkeit von einer bestimmten Eigenschaft der Daten und einige Elemente werden hinzugefügt, gelöscht und aktualisiert.

Ich kann es nicht schaffen, richtig von einem zu einem anderen Sonnendurchbruch zu wechseln. Der Übergang ist abgesehen von der Aktualisierung des bestehenden Elements fast in Ordnung.

Zum Beispiel nehme ich in den beiden folgenden Stücken von Daten sichtbar zu machen, wie beispielsweise

[{'name': 'A', 'value': 100}, {'name': 'B', 'value': 100}, {'name': 'C', 'value': 100}] 

und

[{'name': 'A', 'value': 300}, {'name': 'D', 'value': 200}]. 

Im obigen Beispiel gemeinsame Elemente haben würde Ich mag, dass die Lichtbogen zu dem entsprechenden das Element A wird wie beim Sunburst-Beispiel auf der d3-Website glatt aktualisiert, die B- und C-Elemente verschwinden (und ich schaffte es), und die D-Elemente erscheinen sanft, wie ein wachsender Bogen oder etwas Ähnliches.

Ich habe versucht, hart, aber ich bin immer Konsolenprotokolle bekommen wie die folgenden:

Error: Problem parsing d="M307.2125548508473,-80.28703629255259A350,350 0 0.816469152,1 -241.27474698802394,61.83978850098657L-172.92635975175665,38.77767308406868A238.60164101523165,238.60164101523165 0 0.816469152,0 210.15560219262875,-60.13103059122014Z" 

Ich denke, es ein Problem gibt, wenn die Datenänderungen zwischen einem viz und dem anderen, aber ich weiß nicht, wie es zu lösen.

+0

könnten Sie einen Link oder einen Referenzcode zur Verfügung stellen? Schwer zu sagen, was das Problem sein könnte, ohne ein wenig mehr Details ... – dsummersl

+0

Wir haben Recht. Jedenfalls funktionierte der Ausschnitt, den Mike mir gab, wie ein Zauber. Danke für das Interesse. – RMinelli

Antwort

10

Der Parse-Fehler wird durch eine naive Pfadinterpolation von SVG elliptical arc command, A verursacht. Elliptische Bögen haben die Form "rx ry x-achs-rotation large-arc-flag sweep-flag x y". Wenn Sie die Standardpfadinterpolation für Arc-Befehle verwenden, ist es möglich, dass Sie versehentlich versuchen, auch eines der Flags zu interpolieren, das nur den Wert Null oder Eins haben kann. Dieser Fehler tritt immer auf, wenn Sie den innerRadius aktivieren oder deaktivieren.

Sie sollten die default string interpolator für d3.svg.arc Pfaddaten nicht verwenden; Bögen müssen in Polarkoordinaten mit einer custom tween interpoliert werden. Hier sind zwei kurze Beispiele zeigen, wie Bögen im Datenraum zu interpolieren:

+0

Vielen Dank. Ich habe tatsächlich versucht, ein benutzerdefiniertes Tween zu verwenden, aber ohne Erfolg. Dein kurzer Ausschnitt hat mir den Tag gemacht. Danke Mike! – RMinelli