Ich habe eine Reihe von Daten, die Daten enthalten, die Diagramme sind mit Punkten (Kreisen) miteinander verbunden gezeichnet und alles ist in Ordnung. Jetzt möchte ich nur die Punkte verbinden, deren Daten um maximal 7 Tage getrennt sind (< = 7).d3 Zeilen definieren abhängig vom Tage Unterschied zwischen den Daten
Ich fand heraus, dass es in defined
Funktion eingebaut ist und das ist wahrscheinlich, was ich verwenden muss.
Ich möchte erreichen this.
In dem obigen Beispiel werden die Daten wo keine Zeile sein soll als Null gesetzt, also muss ich es ein wenig anders machen.
Ich sah auch this, aber das ist nicht das, was ich brauche.
Hier ist, was ich bisher habe (ich glaube, ich auf dem richtigen Weg bin, aber ich bin etwas fehlt):
let valueline = d3.line()
.defined(function(d) {
let nextDate = (resources[d.axis].samples[d.index + 1]) ? resources[d.axis].samples[d.index + 1].date.getTime() : undefined,
previousDate = (resources[d.axis].samples[d.index - 1]) ? resources[d.axis].samples[d.index - 1].date.getTime() : undefined,
currentDate = d.date.getTime(),
//most relevant code from here
differenceNext = Math.floor((nextDate - currentDate)/86400000),
differencePrevious = Math.floor((currentDate - previousDate)/86400000);
if(differencePrevious <= 7 || isNaN(differencePrevious)){ //or use differenceNext
return true;
}
return false;
})
.//some more line callbacks (x, y)
So habe ich versucht, mehrere Kombinationen differencePrevious
oder differenceNext
, und die Ergebnisse sind unterschiedlich . manchmal sind die Kreise richtig verbunden und manchmal nicht.
Müssen beide Linienindizes, die verbunden werden sollen, true
von der defined
callback
zurückgegeben werden?
Wirklich brauchen Hilfe zu diesem Thema und würde sehr geschätzt werden.
Thx für Ihre Antwort, scheint der Weg zu sein, es zu tun, aber ich immer noch nicht, wie und wo ich es in meinem Code implementieren müssen. Hier ist ein reduziertes Beispiel von dem, was ich tue, könntest du vielleicht ein wenig Zeit deiner Zeit nehmen, um mir zu zeigen, wo ich es bitte hinlegen muss? https://jsfiddle.net/rzxa19kq/54/ –
ok ich denke, ich komme näher, muss nur diesen zusätzlichen Kreis in der oberen linken Seite loswerden https://jsfiddle.net/rzxa19kq/56/ die ich ' ll akzeptieren die antwort –
thyx viel, funktioniert! https://jsfiddle.net/rzxa19kq/57/ –