Siehe hierzu JSFiddle. Wie bekomme ich die Y-Achse Null zum Ausrichten?Wie kann ich mehrere Y-Achsen in Highcharts zwingen, einen gemeinsamen Nullpunkt zu haben?
Antwort
Die kurze Antwort ist: Sie können nicht.
Sie können die Achsenskalierung, das Auffüllen und das Ankreuzen von Positionen und dergleichen optimieren und erhalten möglicherweise, was Sie wollen, aber es gibt keine Einstellung, um dies zu erreichen.
Es gibt eine Feature-Anfrage aber, dass Sie Ihre Stimmen und/oder Kommentare hinzufügen können:
EDIT: OTOH, ich habe zu erwähnen, dass Dual-Achsen-Diagramme wie diese sind am häufigsten eine sehr schlechte Möglichkeit, die Daten anzuzeigen, und fordert den Benutzer auf, Vergleiche durchzuführen, die nicht gültig sind.
Während die meisten Leute immer versuchen, alles in ein Diagramm zu stellen, sind mehrere Diagramme oft die bessere Lösung.
FWIW
Der einfachste Weg ist es, nur die gleiche min/max für jede Achse. Es wäre ziemlich einfach, ein gutes Min/Max zu bestimmen, basierend auf den Daten vor dem Plot-Aufruf (kombiniere die Arrays, nimm die Min/Max-Runden runter/bis zum nächsten int, wäre mein Ansatz).
pretend this is code so I can link to jsFiddle
fiddle aktualisiert.
Angenommen, Sie haben Daten mit äquivalenten Einheiten, das wäre eine großartige Lösung. Meistens, wenn Sie ein Diagramm mit mehreren Achsen erstellen, ist das überhaupt keine faire Annahme ... – jlbriggs
Sie können Min-/Max-Wert für die erste yAchse gesetzt und linkedTo zur zweiten Achse verwenden, aber ich bin mir nicht sicher, ob Sie diesen Effekt erwarten:
yAxis: [{ // Primary yAxis
labels: {
format: '{value}°C',
style: {
color: '#89A54E'
}
},
title: {
text: 'Temperature',
style: {
color: '#89A54E'
}
},
min:-250,
max:50
//linkedTo:1
}, { // Secondary yAxis
title: {
text: 'Rainfall',
style: {
color: '#4572A7'
}
},
labels: {
format: '{value} mm',
style: {
color: '#4572A7'
}
},
opposite: true,
linkedTo:0
}],
Ich kann das Ergebnis aus irgendeinem Grund nicht duplizieren. Ich nehme an, das LinkedTo bewirkt, dass die Skalen proportional werden und ein großer Wert in einer Reihe bewirkt, dass der Rest gequetscht wird. Ich versuche, die Waage unabhängig zu machen, aber die Null muss sich ausrichten. Nicht sicher, ob meine Anforderung überhaupt machbar ist. –
Diese Lösung, wie die anderen oben genannten, beruht auf Serien mit gleichen Maßstäben, was meistens nicht der Fall ist, wenn jemand ein Dual-Achsen-Diagramm verwendet. – jlbriggs
Eine einfache Abhilfe, bis diese Die Funktion wird hinzugefügt, um sicherzustellen, dass das Verhältnis von max/min für beide Achsen gleich ist. Zum Beispiel ist das Minimum und das Maximum für die primäre y-Achse beispielsweise -20 und 40, dann ist das maximale/minimale Verhältnis gleich -2. Nun sagen wir, dass wir einen maximalen Wert für die sekundäre y-Achse von 25 haben. Wenn wir die min für diese Achse auf 25/-2 (= -12,5) setzen, wird die y = 0 Linie für die zwei Achsen ausgerichtet.
Würde viel schöner sein, eine Flagge zu haben, dies jedoch automatisch eingestellt werden soll ;-)
EDIT: Manche Dinge wie unten für mich OK gearbeitet:
yAxis0Extremes = chart.yAxis[0].getExtremes();
yAxisMaxMinRatio = yAxis0Extremes.max/yAxis0Extremes.min;
yAxis1Extremes = chart.yAxis[1].getExtremes();
yAxis1Min = (yAxis1Extremes.max/yAxisMaxMinRatio).toFixed(0);
chart.yAxis[1].setExtremes(yAxis1Min, yAxis1Extremes.max);
Ich mochte Ihre Lösung! Es hat perfekt funktioniert, um die Graphen auszurichten. Danke für das Teilen ... – Ohlin
Super, danke !!! –
Fast perfekte Antwort. Das einzige Problem ist, dass es nur positive Werte anzunehmen scheint. Ich versuche es zu benutzen, um eine negative Achse empfindlich zu machen und werde es teilen, wenn ich es schaffe. – Zuks
Sie können es leicht durch die folgende unter Code-
brauchen Sie nur zu finden, welchen Punkt entgegengesetzter y-Achse Null der ersten y-Achse entspricht und die min von opp y-Achse (dieser Punkt * -1) gesetzt
In mein Fall yaxis [1] bildet den Haupt yaxis und yaxis [0] bildet das Gegenteil yaxis
}, function(chart) { // on complete
var factor = chart.yAxis[1].min/chart.yAxis[1].tickInterval
var tick = chart.yAxis[0].tickInterval;
var _min = chart.yAxis[0].tickInterval * factor
chart.yAxis[0].update({ min: _min });
chart.yAxis[0].update({ tickInterval: tick });
});
Ich weiß, dass es 2 Jahre gewesen ist. Allerdings habe ich eine bessere Lösung gefunden, als die Lösung, die in früheren Antworten gegeben wurde. Meine Lösung verwendet immer noch setExtremes, um min, max für yAxis zu setzen, aber mit einer besseren Ausnahmebehandlung, die für show()
und hide()
beliebige Plots extrem gut ist. Lösung: link
Github: link
- 1. Highcharts - yAchsen tickInterval bis max. Daten
- 2. Wie kann ich eine Komponente in einem TFrame zwingen, einen eigenen Event-Handler zu haben?
- 3. Wie kann ich mein WPF-Hauptfenster zwingen, einen Vista-Look auf einem XP-Rechner zu haben?
- 4. Highcharts - Nullpunkt auf Y-Achse mit negativen Werten zentriert
- 5. Java - Alternativen zu zwingen, Unterklasse zu haben eine statische Methode
- 6. Kann ich die Forminformationen der gemeinsamen Variablen in theano haben?
- 7. Wie kann ich Division zwingen, Gleitpunkt in Go zu sein?
- 8. Kann ich mehrere Konfigurationsdateien in DropWizard haben?
- 9. Wie erzwinge ich einen gemeinsamen Vorfahren in einem Git-Merge?
- 10. Wie kann ich ag zwingen, Übereinstimmungen in node_modules zu finden?
- 11. JavaScript Highcharts: wie zwei xAxis Kategorien haben?
- 12. Wie kann ich GDB zum Zerlegen zwingen?
- 13. Wie kann ich Legenden in Highcharts verschieben?
- 14. Wie kann ich Excel zwingen, Seitenumbrüche korrekt zu zählen?
- 15. Kann ich mehrere GOPATH-Verzeichnisse haben?
- 16. Wie kann ich Doxygen zwingen, deterministische, lesbare URLs zu generieren?
- 17. Kann ich mehrere AJAX-Anfragen gleichzeitig haben?
- 18. Kann ich einen Datenwert in Highcharts null lassen?
- 19. Kann ich Webbrowser zwingen, Formulartext als UTF8 zu senden?
- 20. Wie kann ich SQL Server zwingen
- 21. Wie verwende ich einen gemeinsamen _ViewStart in Bereichen?
- 22. kann ich mehrere Realm-Dateien haben?
- 23. Wie kann ich einen Fortschrittsbalken zwingen, während einer lang andauernden Operation in VB.NET zu aktualisieren?
- 24. Kann ich Python-Array-Elemente zwingen, eine bestimmte Größe zu haben?
- 25. Wie kann ich Rails zwingen, application.js neu zu laden?
- 26. Wie kann ich zwingen, alle Modelle von Rails zu laden?
- 27. Wie zu zwingen Datei Spülung
- 28. Wie kann ich Java's HttpClient zwingen, ungültige Cookies zu akzeptieren?
- 29. Contiki OS - kann ich mehrere etimer haben?
- 30. , die keine gemeinsamen Felder haben
hinzufügen 3 Stimmen dazu. Schade! –