Punkte auf der Linie in d3.js
Ich bin erstellen Sie ein Liniendiagramm, in d3.js wie diese:
var line = d3.svg.line()
.interpolate("basis")
.x(function(d) { return x(d.date); })
.y(function(d) { return y(d.temperature); });
Dann möchte ich setzen Punkte auf der Linie Daten-Punkte wie diese:
var points = svg.selectAll(".point")
.data(cities1[0].values)
.enter().append("svg:circle")
.attr("stroke", "black")
.attr("fill", function(d, i) { return "black" })
.attr("cx", function(d, i) { return x(d.date) })
.attr("cy", function(d, i) { return y(d.temperature) })
.attr("r", function(d, i) { return 3 });
Das Ergebnis ist nicht das, was ich erwarte:
Ich dann ändern interpolieren("basis") zu interpolieren("Kardinal") und bekommen, was ich will:
Warum hab ich das falsche Ergebnis mit basis? Wie kann ich zeichnen Sie die genaue Punkte mit Grundlage auch?
EDIT: Eine ähnliche (unbeantwortete) Frage. Check-out dieses jsfiddle. Es wird nur funktionieren, wenn Sie das interpolieren von der basis zum Kardinal (oder andere) - Modus. Aber Kardinal hat ein problem, dass es nicht an die maximale Höhe des Diagramms. Was ich Suche ist eine Erklärung, warum einige Interpolations-Modus zu verhindern, wenn die Punkte an der richtigen Stelle (und warum Kardinal nicht respektieren max Höhe).
siehe edit mit mehr Daten
Ich habe das gleiche problem. Siehe meine Frage hier: stackoverflow.com/questions/16491180/... muss Es möglich sein, die Berechnung der Kontrollpunkte für die "basis" - interpolation, so dass die Linie geht durch alle Ihre Punkte. Wenn man sich hier stackoverflow.com/questions/9710616/... , Sie werden sehen, wie dies für Kurven generiert HTML 5
quadraticCurveTo
. Die Formel für D3
"basis" der Kurven ist anders aber so ist die Lösung gegeben, es wird nicht funktionieren.Also, wenn jemand in der Lage ist zu helfen, mit der Mathematik zu tun, die Berechnung der Kontrollpunkte für die
D3
basis interpolieren muss, dann muss es möglich sein, diese zu lösen.Fragen und Antworten nützlich sein können.
InformationsquelleAutor Yaron Naveh | 2012-12-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist leider eine Eigenschaft der "basis" - interpolation " -- die Zeile muss nicht unbedingt laufen durch die Punkte. Es gibt keine Möglichkeit der "Fixierung". Es sei denn, Sie benötigen unbedingt diese Besondere interpolation, nur stick mit ein, die es Ihnen ermöglicht, die Punkte zu Holen Recht.
Könnten Sie bei der Implementierung einer benutzerdefinierten interpolation, die Ihnen den Zugriff auf die Punkte der Linie verläuft durch und fügen Sie die Kreise entsprechend. Dies erfordert ein etwas in die Tiefe, wie wissen d3 und Zeile interpolatoren aber funktionieren.
InformationsquelleAutor Lars Kotthoff
Es ist mein Verständnis, dass 'die basis' interpolation wird eine mittlere Linie zwischen den Datenpunkten. Kardinal erstellen eine glatte Linie verbindet alle Punkte.
InformationsquelleAutor user3684875