Як встановити значення max та min для осі Y


176

Я використовую лінійну діаграму від http://www.chartjs.org/ введіть тут опис зображення

Оскільки ви бачите, що максимальне значення (130) та мінімальне значення (60) для осі Y вибираються автоматично, я хочу, щоб максимальне значення = 500 та мінімальне значення = 0. Чи можливо це?

Відповіді:


68

Ви маєте перевизначити масштаб, спробуйте це:

window.onload = function(){
    var ctx = document.getElementById("canvas").getContext("2d");
    window.myLine = new Chart(ctx).Line(lineChartData, {
        scaleOverride : true,
        scaleSteps : 10,
        scaleStepWidth : 50,
        scaleStartValue : 0 
    });
}

49
Зауважте, що ця відповідь стосується версій 1.x charter.js scalesОб'єкт у версіях 2.x зовсім інший. Дивіться відповідь @OferSegev нижче та документацію 2.x тут .
Боаз

1
Чи є документація для v1.x також @Boaz
Black Mamba

1
@IshanMahajan Раніше було :) Я, здається, більше не можу його знайти. Я думаю, це хороше дзеркало: web-beta.archive.org/web/20150816192112/http://…
Boaz

264

Для chart.js V2 (бета-версія) використовуйте:

var options = {
    scales: {
        yAxes: [{
            display: true,
            ticks: {
                suggestedMin: 0,    // minimum will be 0, unless there is a lower value.
                // OR //
                beginAtZero: true   // minimum value will be 0.
            }
        }]
    }
};

Детальнішу інформацію див. У документації chart.js щодо конфігурації лінійних осей .


33
см також min, maxі stepsizeатрибути ticksпростору імен
Ральф Callaway

17
suggestedMaxза мінімальне найвище значення
Finesse

60

var config = {
            type: 'line',
            data: {
                labels: ["January", "February", "March", "April", "May", "June", "July"],
                datasets: [{
                        label: "My First dataset",
                        data: [10, 80, 56, 60, 6, 45, 15],
                        fill: false,
                        backgroundColor: "#eebcde ",
                        borderColor: "#eebcde",
                        borderCapStyle: 'butt',
                        borderDash: [5, 5],
                    }]
            },
            options: {
                responsive: true,
                legend: {
                    position: 'bottom',
                },
                hover: {
                    mode: 'label'
                },
                scales: {
                    xAxes: [{
                            display: true,
                            scaleLabel: {
                                display: true,
                                labelString: 'Month'
                            }
                        }],
                    yAxes: [{
                            display: true,
                            ticks: {
                                beginAtZero: true,
                                steps: 10,
                                stepValue: 5,
                                max: 100
                            }
                        }]
                },
                title: {
                    display: true,
                    text: 'Chart.js Line Chart - Legend'
                }
            }
        };

        var ctx = document.getElementById("canvas").getContext("2d");
       new Chart(ctx, config);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.1/Chart.bundle.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <canvas id="canvas"></canvas>
</body>


Працював просто чудово в 2.4.0
Авінаш

39

ChartJS v2.4.0

Як показано в прикладах на https://github.com/jtblin/angular-chart.js 7 лютого 2017 року (оскільки, здається, це може бути змінено часто):

var options = {
    yAxes: [{
        ticks: {
            min: 0,
            max: 100,
            stepSize: 20
        }
    }]
}

Це призведе до 5 значень осі y як таких:

100
80
60
40
20
0

Я здивований, що це працює, тому що я думав, що xAxesі yAxesповинні були вкладатись scalesу параметри. Цей плюс є більш новим, ніж відповідь Офера Сергєва, яка, здається, є правильною, також дивує.
claudekennilol

1
Мій графік містить кілька рівнянь з великим рівнем шуму. Чи є спосіб оновити максимальне значення в режимі реального часу на основі найбільшого значення одного з рівнянь? Наприклад, максимальне значення + 100.
Мартін Ерлік

26

Написання цього у 2016 році, тоді як діаграма js 2.3.0 є останньою. Ось як це можна змінити

var options = {
    scales: {
        yAxes: [{
            display: true,
            stacked: true,
            ticks: {
                min: 0, // minimum value
                max: 10 // maximum value
            }
        }]
    }
};

15

Наведені вище відповіді для мене не спрацювали. Можливо, імена варіантів були змінені з 11 року, але наступний трюк для мене:

ChartJsProvider.setOptions
  scaleBeginAtZero: true

13
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx ,{
          type: 'line',
          data: yourData,
          options: {
            scales: {
                yAxes: [{
                    ticks: {
                        beginAtZero:true,
                        min: 0,
                        max: 500    
                    }
                  }]
               }
            }
});

Я конфігурую з 'параметрами' в v2.

Ви повинні прочитати документацію: http://www.chartjs.org/docs/#scales-linear-scale


Дякую. Цей працював для мене на v2.5 charter.js. Простий і ефективний.
Іонут Некула

2
Документи настільки засмучують ... Я мушу шукати приклади людей, щоб відгадати доступні варіанти.
Адріан П.

Якщо хтось використовує чистий JavaScript, ця відповідь є правильною. Я написав невеликий приклад, використовуючи це, і я розмістив повний js-код нижче.
Ішара Амарасекера

9

Я написав js для відображення значень від 0 до 100 по осі y з зазором 20.

Це мій script.js

//x-axis
var vehicles = ["Trucks", "Cars", "Bikes", "Jeeps"];

//The percentage of vehicles of each type
var percentage = [41, 76, 29, 50];

var ctx = document.getElementById("barChart");
var lineChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: vehicles,
    datasets: [{
      data: percentage,
      label: "Percentage of vehicles",
      backgroundColor: "#3e95cd",
      fill: false
    }]
  },
  options: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true,
          min: 0,
          max: 100,
          stepSize: 20,
        }
      }]
    }
  }
});

Це графік, який відображається в Інтернеті.

Відсоток транспортних засобів у місті



7

Просто встановіть значення для scaleStartValue у своїх параметрах.

var options = {
   // ....
   scaleStartValue: 0,
}

Дивіться документацію для цього тут .


Ця відповідь для мене краща, оскільки вона
пояснює,

7
yAxes: [{
    display: true,
    ticks: {
        beginAtZero: true,
        steps:10,
        stepValue:5,
        max:100
    }
}]

1
Хоча цей код може відповісти на питання, надаючи додатковий контекст щодо того, чому та / або як він відповідає на питання, значно покращить його довгострокове значення. Будь ласка , змініть свій відповідь , щоб додати деякі пояснення.
Toby Speight

7

Це для Charts.js 2.0:

Причина, що деякі з них не працюють, полягає в тому, що ви повинні оголосити свої варіанти, коли ви створюєте свою діаграму так:

$(function () {
    var ctxLine = document.getElementById("myLineChart");
    var myLineChart = new Chart(ctxLine, {
        type: 'line',
        data: dataLine,
        options: {
            scales: {
                yAxes: [{
                    ticks: {
                        min: 0,
                        beginAtZero: true
                    }
                }]
            }
        }

    });
})

Документація для цього знаходиться тут: http://www.chartjs.org/docs/#scales


Це адаптація до змін у ChartJS, які надійшли із версією 2.0 (я думаю, що питання та прийнятий відповідь рік тому стосувалися ChartJS 1.x). Можливо, ця відповідь буде навіть кориснішою, якщо це буде коротко пояснено. Можливо, просто прокоментуйте цей коментар, якщо дозволяє час. Дякую.
Dilettant

3

З 1.1.1 я використовував наступне, щоб виправити шкалу між 0,0 та 1,0:

var options = {
    scaleOverride: true,
    scaleStartValue: 0,
    scaleSteps: 10,
    scaleStepWidth: 0.1
}

1

У моєму випадку я використовував зворотний виклик у кліщах yaxis, мої значення - у відсотках, і коли він досягає 100%, він не показує крапку, я використав це:

      yAxes: [{
                   ticks: {
                       beginAtZero: true,
                       steps: 10,
                       stepValue: 5,
                       max: 100.1,
                       callback: function(value, index, values) {
                           if (value !== 100.1) {
                               return values[index]
                           }
                       }
                   }
               }],

І це спрацювало добре.


0

Оскільки жодна з наведених вище пропозицій не допомогла мені з charts.js 2.1.4, я вирішив це, додавши значення 0 до мого масиву наборів даних (але без додаткової мітки):

statsData.push(0);

[...]

var myChart = new Chart(ctx, {
    type: 'horizontalBar',
    data: {
        datasets: [{
            data: statsData,
[...]

0

Я використовував стару версію шаблону Flat Lab у декількох шахтних проектах, які використовували v1.x char.js, в чому я не впевнений. . Вищезгадане(bardata,options) для мене не працювало.

Отже ось хак для версії 1.x

calculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,valueBounds.minSteps,valueBounds.maxValue,valueBounds.minValue,labelTemplateString);

Замініть його на:

calculatedScale = calculateScale(scaleHeight,valueBounds.maxSteps,1,valueBounds.maxValue,0,labelTemplateString);

0

Діаграми мають значення "min" та "max". Документація за цим посиланням

https://www.chartjs.org/docs/latest/axes/cartesian/linear.html


3
Ця відповідь не додає жодної інформації до цього питання, яке було задано 4 роки тому. Крім того, посилання можуть зникнути, тому, будь ласка, включіть суть посилання у свій пост.
викривлений
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.