Javascript 更改AmChart中的值的数量

Javascript 更改AmChart中的值的数量,javascript,csv,amcharts,Javascript,Csv,Amcharts,我正在用amchart做一个图表。它从csv文件中获取数据,并将其放入线形图中。我试图做的是改变图表中显示的值的数量。例如,我只想显示csv文件的最后30个值。以下是我的图表设置: var chart = AmCharts.makeChart(htmlID, { "type": "serial", "color": "#FFFFFF", "theme": "light", "titles": [{

我正在用amchart做一个图表。它从csv文件中获取数据,并将其放入线形图中。我试图做的是改变图表中显示的值的数量。例如,我只想显示csv文件的最后30个值。以下是我的图表设置:

var chart = AmCharts.makeChart(htmlID, {
            "type": "serial",
            "color": "#FFFFFF",
            "theme": "light",
            "titles": [{
                "text": graphTitle,
                "alpha": 1,
                "color": "#FFFFFF"
            }],
            "dataProvider": data,
            "valueAxes": [{
                "title": xTitle,
                "gridColor": "#FFFFFF",
                "gridAlpha": 0.3,
                "dashLength": 0
            }],
            "gridAboveGraphs": true,
            "startDuration": 1,
            "graphs": [{
                "balloonText": "[[category]]: <b>[[value]]</b>",
                "fillAlphas": 0,
                "lineAlpha": 1,
                "type": graphType,
                "bullet": "round",
                "valueField": xField
            }],
            "chartCursor": {
                "categoryBalloonEnabled": false,
                "cursorAlpha": 0,
                "zoomable": true
            },
            "categoryField": yField,
            "categoryAxis": {
                "title": yTitle,
                "autoGridCount": false,
                "gridCount": 20,
                "gridPosition": "start",
                "gridAlpha": 0,
                "tickPosition": "start",
                "tickLength": 20,
                "labelRotation": 290
            }
        });

    });
var chart=AmCharts.makeChart(htmlID{
“类型”:“串行”,
“颜色”:“FFFFFF”,
“主题”:“光”,
“头衔”:[{
“文本”:graphTitle,
“阿尔法”:1,
“颜色”:“#FFFFFF”
}],
“数据提供者”:数据,
“价值轴”:[{
“标题”:xTitle,
“gridColor”:“#FFFFFF”,
“gridAlpha”:0.3,
“dashLength”:0
}],
“网格图”:没错,
“起始持续时间”:1,
“图表”:[{
“文本”:“[[category]]:[[value]]”,
“fillAlphas”:0,
“lineAlpha”:1,
“类型”:图形类型,
“子弹”:“圆形”,
“valueField”:xField
}],
“图表光标”:{
“CategoryBallooneEnabled”:false,
“cursorAlpha”:0,
“可缩放”:正确
},
“类别字段”:类别字段,
“分类法”:{
“标题”:yTitle,
“自动签名计数”:错误,
“网格计数”:20,
“网格位置”:“开始”,
“gridAlpha”:0,
“滴答声位置”:“开始”,
“滴答声长度”:20,
“唇瓣旋转”:290
}
});
});
这是反解析CSV函数:

        function parseCSV(data) {
        //replace UNIX new lines
        data = data.replace(/rn/g, "n");
        //replace MAC new lines
        data = data.replace(/r/g, "n");
        //split into rows
        var rows = data.split("n");

        // loop through all rows
        for (var i = 0; i < rows.length; i++) {
            // this line helps to skip empty rows
            if (rows[i]) {
                // our columns are separated by comma
                var column = rows[i].split(",");

                var category = column[yLocation];
                // second item is value of the second column
                var value = column[xLocation];

                // create object which contains all these items:
                var dataObject = {
                    //Or change this to field names! Like STN and TEMP
                    ID: category,
                    TEMP: value
                };
                // add object to chartData array
                chartData.push(dataObject);
            }
        }
        chart.validateData();
    }
函数解析CSV(数据){
//更换UNIX新线路
数据=数据。替换(/rn/g,“n”);
//更换新线路
数据=数据。替换(/r/g,“n”);
//分成几行
var行=数据分割(“n”);
//循环遍历所有行
对于(变量i=0;i
我尝试更改for循环,使其只读取最后30行。我不知道为什么,但不知怎么的,这不管用。 因此,问题是如何更改图表的值量。

在将CSV数组分配到图表之前,可以使用数组方法将其切片到最后30个值:

function parseCSV(data) {
  //replace UNIX new lines
  data = data.replace(/\r\n/g, "\n");
  //replace MAC new lines
  data = data.replace(/\r/g, "\n");
  //split into rows
  var rows = data.split("\n");

  //get the last 30
  if (rows.length > 30) {
    rows = rows.slice(rows.length - 31);
  }

  // loop through all rows
  for (var i = 0; i < rows.length; i++) {
    // this line helps to skip empty rows
    if (rows[i]) {
      // our columns are separated by comma
      var column = rows[i].split(",");

      var category = column[yLocation];
      // second item is value of the second column
      var value = column[xLocation];

      // create object which contains all these items:
      var dataObject = {
        //Or change this to field names! Like STN and TEMP
        ID: category,
        TEMP: value
      };
      // add object to chartData array
      chartData.push(dataObject);
    }
  }
  chart.validateData();
}
函数解析CSV(数据){
//更换UNIX新线路
数据=数据。替换(/\r\n/g,“\n”);
//更换新线路
数据=数据。替换(/\r/g,“\n”);
//分成几行
var rows=data.split(“\n”);
//最后30分钟
如果(rows.length>30){
rows=rows.slice(rows.length-31);
}
//循环遍历所有行
对于(变量i=0;i

下面是一个使用您的代码的示例。

谢谢您的评论!这个问题仍然存在。我认为有一个不同的问题。下面是csv文件的一个片段<代码>STN、日期、时间、温度、DEWP、STP、SLP、VISIB、WDSP、PRCP、SNDP、FRSHTT、CLDC、WNDDIR9693302017-02-07,10:13:34,28.9,27.21002.11009.5,14.6,12.5,0.01,0.0010000,68.6291 9632302017-02-07,10:13:34,30.1,26.51034.01013.3,17.0,6.8,0.02,0.0010000,50.3106 9688102017-02-07-07,10:13:34,29.7,26.41007.11007.8,12.5,7.7.7.7,0.00,0.00,0.00,0.00,0.00,0.00.00,如果你能修改代码,你可以复制问题的代码吗有?如果不亲自去看的话,很难说出你的问题是什么。嗯,我真的不知道如何使用codepen网站。但问题是,我没有更改粘贴在问题中的代码中的任何内容。你在那里看到的一切都是我拥有的。imgur是我运行网站时得到的。我也不明白为什么切片会起作用,但是更改for循环不起作用。您在问题中没有说明如何更改for循环,因此我无法告诉您为什么这样做不起作用。如果您更容易修改JSFIDLE,请参阅我提供的代码。很抱歉,我无法让它正常工作。这就是我到目前为止得到的:。我希望这能让事情更清楚一点。