2017-10-30 1 views
-1

This is the output that I would be requiringGlyph in Liniendiagramm Hinzufügen basierend auf Zustand in d3

This is the output that I am getting at the moment

ich den Kreis Glyphen in meinem d3 Code hinzugefügt habe, aber ich brauche, unter der Bedingung, die Glyphen hinzufügen aus, dass, wenn der Monat Jan, erst dann sollte der Kreis erscheinen! Zum Beispiel, um von 01/2019, 01/2020, 01/2021 der Kreis sollte nur an diesen Tagen

g.selectAll("circle") .data(dataIS) .enter() .append("circle") .attr("cx", function (d) { return x(parseTime(d.date));}) .attr("cy", function (d) { return y(d.salary + d.bonus); }) .attr("r", "4") .style("stroke","black") .style("stroke-width","2") .style("fill", "red");

Dies schafft die Kreise auf allen Terminen erscheinen, muss ich filtern und zeigen ihnen, nur auf Monat Jan

+0

Können Sie ein Codebeispiel hinzufügen? –

+0

Willkommen bei StackOverflow. Bitte bearbeite deine ** Frage ** mit dem Code (es gibt eine "Bearbeiten" -Schaltfläche) anstatt Code in den Kommentaren zu schreiben. Fügen Sie auch den entsprechenden Code ([MCVE]) hinzu, um eine korrekte Antwort zu erhalten. –

+0

@MiroslavLigas - habe den Code danke für die Hilfe! – jeet08

Antwort

2

Können Sie die Daten filtern und nur einen Kreis hinzufügen, wenn Monat Januar in den Daten ist?

Ich nehme an, dass dataIS ein Array einer Art ist.

g.selectAll("circle") 
.data(
    dataIS 
    .filter(
    d =>{ 
     console.log("d is:",JSON.stringify(d,undefined,2)); 
     return d.date.getMonth() === 0 //only January 
    } 
) 
) 
.enter() 
... 
+0

@ HMR g.selectAll ("Kreis") .data (dataIS .filter (d => d.date.getMonth() === 0 // nur Januar)) .enter() .app ("circle")) .attr ("cx", Funktion (d) {return x (parseTime (d.date));}) .attr ("cy", Funktion (d) {return y (d.salary + d.bonus); }) .attr ("r", "4") .style ("stroke", "black") .style ("stroke-width", "2") .style ("fill", "dunkelrot"); Ich habe den Code hinzugefügt, den Sie angegeben haben, aber beim Ausführen verschwinden die Achsen und Kreise. – jeet08

+0

@ jeet08 Sie können F12 (vorzugsweise in Chrome) drücken und in der Konsolenregisterkarte der Entwicklerwerkzeuge sehen, ob es eine Ausnahme gibt . Meine Vermutung ist, dass "getMonth keine Funktion ist", da "d.date" entweder nicht definiert ist oder kein Datumsobjekt. Sie können 'console.log (JSON.stringify (d, undefined, 2))' kurz vor dem 'getMonth' (aktualisierte Antwort) und Ihre Frage mit der Ausgabe aktualisieren. – HMR

+0

Ich habe versucht, den bearbeiteten Code auch auszuführen, und es produziert nicht die Ausgabe – jeet08