jak ustawić wartość początkową jako „0” w chartjs?

109

oto mój kod. Muszę ustawić wartość początkową jako „0” w obu skalach osi X i Y. Wypróbowałem opcję skalowania najnowszej wersji.

graphOptions = {               
            ///Boolean - Whether grid lines are shown across the chart
            scaleShowGridLines: false,    
            tooltipTitleTemplate: "<%= label%>",
            //String - Colour of the grid lines
            scaleGridLineColor: "rgba(0,0,0,.05)",
            //Number - Width of the grid lines
            scaleGridLineWidth: 1,
            //Boolean - Whether to show horizontal lines (except X axis)
            scaleShowHorizontalLines: true,
            //Boolean - Whether to show vertical lines (except Y axis)
            scaleShowVerticalLines: true,
            //Boolean - Whether the line is curved between points
            bezierCurve: true,
            //Number - Tension of the bezier curve between points
            bezierCurveTension: 0.4,
            //Boolean - Whether to show a dot for each point
            pointDot: true,
            //Number - Radius of each point dot in pixels
            pointDotRadius: 4,
            //Number - Pixel width of point dot stroke
            pointDotStrokeWidth: 1,               
            pointHitDetectionRadius: 20,               
            datasetStroke: true,
            datasetStrokeWidth: 2,
            datasetFill: true,               
            legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
        };
        var LineChart = new Chart(ctx).Line(graphData, graphOptions);
   }     
Suganthan Raj
źródło

Odpowiedzi:

298

W przypadku Chart.js 2. * opcja rozpoczynania skali od zera jest wymieniona w opcjach konfiguracyjnych skali liniowej . Jest to używane do danych liczbowych, co najprawdopodobniej powinno mieć miejsce w przypadku osi Y. Musisz więc użyć tego:

options: {
    scales: {
        yAxes: [{
            ticks: {
                beginAtZero: true
            }
        }]
    }
}

Przykładowy wykres liniowy jest również dostępny tutaj, gdzie opcja jest używana dla osi y. Jeśli dane liczbowe znajdują się na osi X, użyj xAxeszamiast yAxes. Zauważ, że tablica (i liczba mnoga) jest używana dla yAxes(lub xAxes), ponieważ równie dobrze możesz mieć wiele osi.

xnakos
źródło
@SuganthanRaj Nie ma za co! Po prostu upewnij się, że zapoznałeś się z dokumentacją dotyczącą Chart.js 2.0. Wiele się zmieniło w porównaniu z wersją 1.0, a większość przykładów online dotyczy wersji 1.0. ;)
xnakos
@SuganthanRaj Na przykład, scaleShowVerticalLinesnie jest ważny dla 2.0. Lub szablon podpowiedzi. Opcje na ogół są zgodne z podejściem hierarchicznym w wersji 2.0.
xnakos
3

Jeśli potrzebujesz go jako domyślnej konfiguracji, po prostu umieść go min: 0wewnątrz węzła defaults.scale.ticksw następujący sposób:

defaults: {
  global: {...},
  scale: {
    ...
    ticks: { min: 0 },
  }
},

Źródła: https://www.chartjs.org/docs/latest/axes/

tuliomarchetto
źródło
1

Dodaj tę opcję:

//Boolean - Whether the scale should start at zero, or an order of magnitude down from the lowest value
scaleBeginAtZero : true,

(Odniesienie: Chart.js )

NB: Oryginalne rozwiązanie, które opublikowałem, dotyczyło Highcharts, jeśli nie używasz Highcharts, usuń tag, aby uniknąć nieporozumień

wmash
źródło
2
to nie działa . Używam najnowszej wersji chartjs v2.1
Suganthan Raj
@wmash Muszę rozpocząć wykres od wstępnie zdefiniowanej wartości. Czy wiesz, jak to zrobić? Próbowałem ustawić tę opcję zarówno na true, jak i false, ale to nie działa.
Michael.D
jest to niepoprawne i może / powinno zostać usunięte. beginAtZero: truejest tym, czego potrzebujesz
potrójnie