Chart.js: linhas retas em vez de curvas


111

Estou usando Chart.JS para traçar um conjunto de dados,

No entanto, obtive um efeito suave!

Aqui está a curva que tenho:

insira a descrição da imagem aqui

Aqui está o meu código:

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

}

Como posso ter linhas retas em vez de curvas?

Obrigado

Respostas:


231

Solução para a versão 1 (versão antiga dos gráficos)

De acordo com a documentação do chartjs.org

você pode definir o 'bezierCurve' nas opções e passá-lo quando você criar o gráfico.

bezierCurve: false

por exemplo:

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

Atualização para a versão 2

De acordo com a documentação atualizada para Configuração de Linha nas opções globais

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

por exemplo:

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

E também diretamente na Estrutura do Dataset configurando lineTensionpara 0 (zero).

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.

Um exemplo de objeto de dados usando esses atributos é mostrado abaixo.

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

3
Você precisa bezierCurve: falseobter uma linha reta. true (o padrão) dá a você uma curva (bezier)
potatopeelings

18
Com a nova v2.0, para fazer isso, agora você define tension:0.
scojomodena de

5
de acordo com o documento mais recente , use em lineTensionvez de apenas 'tensão'
Sphro

58

Você pode usar a opção lineTension para definir a curva desejada. Defina 0 para linhas retas. Você pode fornecer um número entre 0-1

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

1
Obrigado, isso corrige para mim na v2.7.1
mfink

4

Usei lineTension para definir a suavidade da curva.

Dos documentos : lineTension recebe um número, a tensão da curva de Bezier da linha. Defina como 0 para desenhar linhas retas. Esta opção é ignorada se a interpolação cúbica monótona for usada.

Apenas certifique-se de testar com valores diferentes a suavidade que você deseja da linha.

Por exemplo:

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

  ]
};


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.