Javascript 更改AmChart中的值的数量
我正在用amchart做一个图表。它从csv文件中获取数据,并将其放入线形图中。我试图做的是改变图表中显示的值的数量。例如,我只想显示csv文件的最后30个值。以下是我的图表设置:Javascript 更改AmChart中的值的数量,javascript,csv,amcharts,Javascript,Csv,Amcharts,我正在用amchart做一个图表。它从csv文件中获取数据,并将其放入线形图中。我试图做的是改变图表中显示的值的数量。例如,我只想显示csv文件的最后30个值。以下是我的图表设置: var chart = AmCharts.makeChart(htmlID, { "type": "serial", "color": "#FFFFFF", "theme": "light", "titles": [{
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,请参阅我提供的代码。很抱歉,我无法让它正常工作。这就是我到目前为止得到的:。我希望这能让事情更清楚一点。