2016-03-18 26 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是你的圖表對象。


小提琴 - http://jsfiddle.net/38gxavst/

+0

這個偉大的工程!謝謝! – dsmvh

+0

歡呼!很高興它有幫助。一旦確定它正常工作,您可能希望將其標記爲答案。 – potatopeelings