Chart.js: прямі лінії замість кривих


111

Я використовую Chart.JS для побудови набору даних,

Однак я отримав плавний ефект!

Ось крива у мене:

введіть тут опис зображення

Ось мій код:

function plotChart(data, labels) {

    var lineChartData = {
        "datasets": [{
            "data": data,
            "pointStrokeColor": "#fff",
            "fillColor": "rgba(220,220,220,0.5)",
            "pointColor": "rgba(220,220,220,1)",
            "strokeColor": "rgba(220,220,220,1)"
        }],
        "labels": labels
    };

    var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Line(lineChartData);

}

Як я можу мати прямі лінії замість кривих?

Дякую

Відповіді:


231

Рішення для версії 1 (стара версія діаграм)

Відповідно до документації на chartjs.org

ви можете встановити 'bezierCurve' в параметрах і передавати його під час створення діаграми.

bezierCurve: false

наприклад:

var options = {
    //Boolean - Whether the line is curved between points
    bezierCurve : false
};
var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Line(lineChartData, options);

Оновлення для версії 2

Відповідно до оновленої документації для конфігурації рядків у глобальних опціях

Name        Type    Default Description
tension     Number  0.4     Default bezier curve tension. Set to 0 for no bezier curves.

наприклад:

var options = {
    elements: {
        line: {
            tension: 0
        }
    }
};

А також безпосередньо в Структурі набору даних, встановивши lineTension0 (нуль).

Property        Type    Usage
lineTension     Number  Bezier curve tension of the line. Set to 0 to draw straightlines. 
                        This option is ignored if monotone cubic interpolation is used. 
                        Note This was renamed from 'tension' but the old name still works.

Приклад об’єкта даних, що використовує ці атрибути, показаний нижче.

var lineChartData = {
    labels: labels,
    datasets: [
        {
            label: "My First dataset",
            lineTension: 0,           
            data: data,
        }
    ]
};

3
Вам потрібно bezierCurve: falseотримати пряму лінію. true (за замовчуванням) дає криву (bezier)
картопляні пісні

18
З новим v2.0 для цього ви тепер встановили tension:0.
scojomodena

5
відповідно до останнього документа , будь ласка, використовуйте lineTensionзамість просто «напругу»
Sphro

58

Ви можете використовувати параметр lineTension для встановлення потрібної кривої. Встановіть 0 для прямих ліній. Ви можете дати число між 0-1

data: {
    datasets: [{
        lineTension: 0
    }]
}

1
Дякую, це виправляє це для мене на v2.7.1
mfink

5

Я використовував lineTension для встановлення плавності кривої.

Від docs : lineTension отримує число, напруга кривої Безьє лінії. Встановіть 0 для малювання прямих ліній. Цей варіант ігнорується, якщо використовується монотонна кубічна інтерполяція.

Просто переконайтеся, що випробуєте з різними значеннями, наскільки рівним ви хочете лінію.

Наприклад:

var data = {
  labels: ["Jan", "Feb", "Mar"],
  datasets: [{
      label: "Label 1",
      lineTension: 0.2
    }, {
      label: "Stock B",
      lineTension: 0.2
    }

  ]
};


Це правильна відповідь у 2020 році
jbnunn

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