Wir versuchen, zwei Datenreihen auf demselben Diagramm anzuzeigen. Die erste Reihe (dh die Anzahl der Zitate) kann nur positive ganze Zahlen (und 0) enthalten. Die zweite Reihe (dh Verkaufswert) kann sowohl positive als auch negative Float-Werte enthalten (falls Sie sich wundern, ergeben sich die negativen Werte aus der Ausgabe von Gutschriften).Highcharts - Ausgabe mit negativen Werten beim Anzeigen mehrerer Achsen
Wie auf dem angehängten Bild angezeigt, ist das Problem, dass, wenn die zweite Serie negative Werte enthält, die 0-Punkt "Basislinie" der beiden Datenreihen nicht mehr geteilt wird.
Wir haben versucht, haben die „min“ Optionen der Y-Achsen Einstellung 0, aber dann verlieren wir den Einblick auf negative Werte aus.
Wir haben auch versucht, das Minimum der ersten Serie so einzustellen, dass es dem Minimum der zweiten Serie entspricht, aber leider skaliert es die Spalten nicht sehr schön (da die Werte jeder Y-Achse vollständig aufleuchten) verschiedene Skalen, dh: 10s vs 1000s).
Wie können wir das Diagramm so konfigurieren, dass die 0-Punkt "Basislinie" geteilt wird? Mit anderen Worten, wie würden wir die blauen Spalten dazu bringen, an der gleichen Basislinie wie der grüne 0-Punkt zu beginnen?
aktualisieren
Linger Antwort ist ein Schritt in die richtige Richtung. Das Setzen der min
und tickinterval
für beide Achsen macht den Trick. Die Werte müssen jedoch dynamisch basierend auf variablen Daten bestimmt werden, wo ich jetzt feststecke.
Gibt es Tipps, wie diese min
und tickinterval
Werte bestimmt werden können, bevor ich das Diagramm erstellen?
Ich habe in der Zwischenzeit darüber nachgedacht. Die Werte der linken Achse (blau/quotiert) sind immer positiv und beginnen bei Null. Daher bestimmt die rechte Achse (grün/Verkauf) die Anzahl der Ticks, die unterhalb des Nullpunkts angezeigt werden. Da nun highcharts bestimmt automatisch die beste Skala sowohl für blau und grün, alles, was ich tun muß, ist einen Weg finden, die linken Achse Mindestwert einzustellen, wie so (den Pseudo-Code entschuldigen):
var factor = right_axis.min/right_axis.tickinterval;
left_axis.min = factor * left.tickinterval;
Hinweis: Ich habe gesehen, dass die Referenz-API eine setExtremes() -Methode unter Axis hat, aber dies würde erfordern, dass ich zuerst das Diagramm initialisiere und dann zurück gehe und seine linke Achse aktualisiere. Ich hoffe, dies zu tun, bevor ich das Diagramm zeichne. Vielleicht übersehe ich etwas Offensichtliches?
Danke.
Mein Diagramm muss dynamisch generiert werden. Wie kann ich programmatisch die entsprechenden Werte für min und tickinterval ermitteln? Ich habe meine Frage aktualisiert, um diese zusätzlichen Erkenntnisse zu berücksichtigen. Danke für die Hilfe. –
Siehe meine Bearbeitung zu meiner Antwort für einen Vorschlag. – Linger
Danke Linger !! –