2016-03-18 3 views
0

У меня есть линейная диаграмма с chart.js. Я хотел бы удалить последнюю точку, но метод removeData() не имеет аргументов для линейной диаграммы, тогда как для полярной диаграммы она поддерживает removeData (atIndex). Поэтому для линейной диаграммы removeData() удаляет только первую точку по умолчанию.javascript chart.js удалить последнюю точку

Как удалить только последний пункт без необходимости сначала удалить все данные?

ответ

0

Извините, если это не работает, первый раз, используя JSFiddle, но, кажется, работает, когда я запускаю его локально:

fiddle

Так что я делаю здесь я создаю исходную диаграмму , затем, когда я нажимаю кнопку «Удалить», он получает текущие данные и присваивает их переменной, выдает последнее значение и затем назначает обратно данные диаграммы перед запуском функции обновления.

HTML:

<canvas id="myChart" width="400" height="400"></canvas> 
<button onclick="removeLast()"> 
Remove 
</button> 

JS:

var options = {}; 

var currData = { 
       labels: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], 
       datasets: [ 
        { 
         label: "Number of beers drunk in the last week", 
         data: [5, 7, 10, 4, 2, 8, 3] 
        } 
]} 

removeLast = function() { 
    dataArray = currData.datasets[0].data; 
    dataArray.pop(); 
    console.log(dataArray); 
    currData.datasets[0].data = dataArray; 
    console.log(currData.datasets[0].data) 
    myLineChart.update(); 
} 

var ctx = document.getElementById("myChart").getContext("2d"); 
var myLineChart = new Chart(ctx).Line(currData); 

Это должно работать как в версии и бета.

1

Вы можете сделать свой собственный, глядя на исходный код для removeData - просто использовать pop вместо shift

myChart.removeLastPoint = function() { 
    this.scale.xLabels.pop(); 
    this.scale.valuesCount--; 
    this.scale.fit(); 

    Chart.helpers.each(this.datasets,function(dataset){ 
    dataset.points.pop(); 
    },myChart); 

    this.update(); 
} 

где myChart находится ваш объект диаграммы.


Fiddle - http://jsfiddle.net/38gxavst/

+0

это работает! Благодаря! – dsmvh

+0

ура! рад, что это помогло. Возможно, вы захотите отметить это как ответ, как только убедитесь, что он работает правильно. – potatopeelings

Смежные вопросы