Chart.js: des lignes droites au lieu de courbes


111

J'utilise Chart.JS pour tracer un ensemble de données,

Cependant j'ai eu un effet lisse!

Voici la courbe que j'ai:

entrez la description de l'image ici

Voici mon code:

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);

}

Comment puis-je avoir des lignes droites au lieu de courbes?

Je vous remercie

Réponses:


231

Solution pour la version 1 (ancienne version des graphiques)

Selon la documentation sur chartjs.org

vous pouvez définir le 'bezierCurve' dans les options et le transmettre lorsque vous créez le graphique.

bezierCurve: false

par exemple:

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

Mise à jour pour la version 2

Selon la documentation mise à jour pour la configuration de ligne dans les options globales

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

par exemple:

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

Et aussi directement dans la structure du jeu de données en définissant lineTensionsur 0 (zéro).

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.

Un exemple d'objet de données utilisant ces attributs est illustré ci-dessous.

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

3
Vous devez bezierCurve: falseavoir une ligne droite. true (la valeur par défaut) vous donne une courbe (bezier)
potatopeelings

18
Avec la nouvelle v2.0, pour ce faire, vous définissez maintenant tension:0.
scojomodena

5
selon le dernier document , veuillez utiliser lineTensionau lieu de simplement «tension»
Sphro

58

Vous pouvez utiliser l'option lineTension pour définir la courbe souhaitée. Définissez 0 pour les lignes droites. Vous pouvez donner un nombre entre 0-1

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

1
Merci, cela corrige le problème pour moi sur la v2.7.1
mfink

5

J'ai utilisé lineTension pour définir la douceur de la courbe.

À partir de la documentation : lineTension reçoit un nombre, la tension de la courbe de Bézier de la ligne. Réglez sur 0 pour tracer des lignes droites. Cette option est ignorée si une interpolation cubique monotone est utilisée.

Assurez-vous simplement de tester avec différentes valeurs la fluidité souhaitée de la ligne.

Par exemple:

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

  ]
};


C'est la bonne réponse en 2020
jbnunn

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.