Zobacz ten JSFiddle. Jak uzyskać wyrównanie osi Y?W jaki sposób można wymusić wiele osi Y w Highcharts, aby mieć wspólne zero
Odpowiedz
Krótka odpowiedź brzmi: nie możesz.
Możesz zmieniać ustawienia skalowania osi, wypełniania i zaznaczania i tym podobne, a także uzyskać to, czego potrzebujesz, ale nie ma ustawień, aby to osiągnąć.
Jest prośba cecha jednak, że można dodać głosy i/lub komentarze do:
EDIT: OTOH, muszę wspomnieć, że podwójne wykresy oś takie jak ten są najczęściej bardzo słaby sposób pokazywania danych i zachęca użytkownika do dokonywania porównań, które nie są prawidłowe.
Podczas gdy większość ludzi zawsze stara się umieścić wszystko w jednym wykresie, wiele map jest często lepszym rozwiązaniem.
FWIW
Najprostszym sposobem jest po prostu zapewnić ten sam min/max dla każdej osi. Byłoby całkiem proste, aby określić dobre min/maksimum w oparciu o dane przed wywołaniem wykresu (połączyć tablice, wziąć rundę min/max w dół/w górę do najbliższej int, byłoby moim podejściem).
pretend this is code so I can link to jsFiddle
Zaktualizowane fiddle.
Zakładając, że masz dane z odpowiednimi jednostkami, byłoby to świetne rozwiązanie. Najczęściej, jeśli tworzysz wykres z wieloma osiami, to wcale nie jest to słuszne założenie ... – jlbriggs
można ustawić min/max wartości dla pierwszego yAxis i używać linkedTo do drugiej osi, ale nie jestem pewien, czy można oczekiwać tego efektu:
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
}],
Nie mogę zduplikować wyniku z jakiegoś powodu. Myślę, że linkedTo powoduje, że skale stają się proporcjonalne, a więc duża wartość w jednej serii powoduje, że pozostałe zostają zgniecione. Próbuję uzyskać niezależność skali, ale mam zerowe wyrównanie. Nie jestem pewien, czy moje wymagania są możliwe. –
To rozwiązanie, podobnie jak inne podane powyżej, opiera się na seriach o takiej samej skali, co najczęściej nie ma miejsca, jeśli ktoś używa wykresu z dwiema osiami. – jlbriggs
Łatwym obejście dopóki funkcja jest dodawana, aby upewnić się, że stosunek max/min jest taki sam dla obu osi. Na przykład min i maksimum dla pierwotnej osi y wynoszą na przykład -20 i 40, a stosunek max/min wynosi -2. Teraz powiedzmy, że mamy wartość maksymalną dla drugiej osi y 25. Jeśli ustawimy min dla tej osi na 25/-2 (= -12,5), wówczas linia y = 0 będzie wyrównana dla dwóch osi.
byłby znacznie ładniejszy mieć flagę ustawić to automatycznie chociaż ;-)
EDIT: Niektóre rzeczy jak poniżej działało OK dla mnie:
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);
Podobało mi się twoje rozwiązanie! Udało mi się idealnie dopasować wykresy. Dzięki za udostępnienie ... – Ohlin
Awesome, thank you !!! –
Prawie idealna odpowiedź. Jedynym problemem jest to, że wydaje się przyjmować tylko wartości dodatnie. Próbuję go użyć do utworzenia wrażliwej osi ujemnej i udostępnię ją, jeśli sobie poradzę. – Zuks
można to zrobić łatwo, wykonując poniżej Code
wystarczy, aby znaleźć punkt, który odpowiada przeciwnej oś y zero pierwszej osi y i ustawić min oPP osi y do tego punktu * (-1)
W moja sprawa yAxis [1] stanowi główny yAxis i yAxis [0] tworzy odwrotny 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 });
});
wiem, że to było dwa lata. Jednak znalazłem lepsze rozwiązanie w porównaniu do istniejącego rozwiązania, które podano w poprzednich odpowiedziach. Moje rozwiązanie nadal używa setExtremes do ustawiania min, max dla yAxis, ale z lepszą obsługą wyjątków, które są wyjątkowo dobre dla show()
i hide()
dowolnego wykresu. Rozwiązanie: link
Github: link
- 1. Highcharts - Zachowaj zero wyśrodkowane na osi Y z wartościami ujemnymi
- 2. Highcharts TypeScript, etykieta osi Y
- 3. W jaki sposób powielona wartość osi Y po obu stronach osi w Highcharts
- 4. Stała szerokość etykiety osi Y w Highcharts
- 5. PANDAS plotuje wiele osi Y
- 6. Dynamiczne dodawanie osi Y
- 7. Achartengine na Androida - wiele osi Y
- 8. Jak skonfigurować flot, aby narysować brakujące szeregi czasowe na osi Y w punkcie zero?
- 9. Highcharts: minimalna wartość osi Y na dole wykresu
- 10. Highcharts: Oś X i Y krzyżują się na zero na wykresie rozproszenia
- 11. W python, w jaki sposób można jednocześnie ustawić wiele wartości z listy na zero?
- 12. Jak mogę uzyskać maksymalną wartość osi y na highcharts?
- 13. Jak wymusić na wykresie automatyczną korektę osi Y?
- 14. Czy w routerze można mieć wiele loadChildrens?
- 15. W jaki sposób można wprowadzić wiele warunków w LIKE operatora
- 16. ggplot2, Kolejność osi Y
- 17. W jaki sposób podajesz etykiety osi wykresu wykresu głównego?
- 18. Udostępnianie drugiej osi Y między subplotami w matplotlib
- 19. Mayavi: obracanie wokół osi Y
- 20. W jaki sposób można podzielić i potokować wiele strumieni NAudio
- 21. HighCharts: Dodawanie hiperłączy do osi X wykresu
- 22. W jaki sposób można wymusić powiązania w klauzuli where jako CAF?
- 23. D3.js wiele osi Y z taką samą pozycją tyknięć?
- 24. logarytmiczne kosze na osi y w Pythonie
- 25. ustawienie limitu osi Y w matplotlib
- 26. Ukrywanie etykiet na osi Y w Chart.js
- 27. Obracanie obrazu wokół osi Y
- 28. W jaki sposób branch.io obsługuje sytuacje, w których wiele urządzeń może mieć ten sam odcisk palca?
- 29. nvd3 discreteBarChart etykieta osi y
- 30. W jaki sposób można użyć std :: bind?
Dodać 3 głosów do tego. Bummer! –