我需要使用CSV数据创建柱形图/条形图。这是数据的格式:
A 156600 154965 45679 184736 160819 42329
B 7271 4537 5379 245 0 1941
C 4347 19143 1075 397 6860 0
D 15 11283 1477 0 0 0
E 6323 537697 222430 21701 98725 3792
F 0 0 0 0 0 0
G 284356 744986 616369 0 0 106877
H 0 0 0 0 0 0
I 0 0 0 32962 0 0
J 0 12742 616 0 0 0
K 0 1215413 1420 0 0 0
L 0 0 0 0 0 0
M 24191 50166 18163 55282 48262 5862
N 0 0 0 0 0 20396
这里我将手动添加X轴类别。所以,我想创建图表 the one seen here
我做到了:
$(document).ready(function() {
var options = {
chart: {
renderTo: 'container',
defaultSeriesType: 'column'
},
title: {
text: 'Total Transactions'
},
xAxis: {
categories: [],labels : { y : 20, rotation: -45, align: 'right' }
},
yAxis: {
title: {
text: 'Units'
}
},
series: []
};
$.get('data.csv', function(data) {
// Split the lines
var lines = data.split('\n');
var series = {
name: 'Transactions ',
data: []
};
$.each(lines, function(lineNo, line) {
var items = line.split(',');
if (lineNo != 0) {
$.each(items, function(itemNo, item) {
if (itemNo == 0) {
options.xAxis.categories.push(item);
} else if (itemNo == 2){
series.data.push(parseFloat(item));
}
});
}
});
options.series.push(series);
var chart = new Highcharts.Chart(options);
});
});
但它采取列明智的价值意味着:
156600
7271
4347
15
6323
0
284356
0
0
0
0
0
24191
0
但我需要这个:
对于A(如Jan),值应为
156600 154965 45679 184736 160819 42329
对于B(如2月),另一列应具有值:
7271 4537 5379 245 0 1941
你能帮帮我吗?
答案 0 :(得分:3)
现在你的方式最终会得到14个系列,每个系列包含6个数据点。如果可以,您真正需要做的是更改csv文件,以便列代表月份,行代表系列,如下所示:
然后,您可以为每一行创建一个数组,并将该数组传递给高图。我认为您的代码应该与上面的csv结构一起使用,因为您正在执行基于\ n的拆分。
修改强>
如果您无法更改CSV文件的格式,则以下修改后的代码应根据您的需要构建6系列。它假定列或行没有标题。它也忽略了最后两行超过一年12个月的行。
$.get('data.csv', function(data) {
var lines = data.split('\n');
var series1 = {name: 'India', data: []};
var series2 = {name: 'China', data: []};
var series3 = {name: 'Australia', data: []};
var series4 = {name: 'Shreelanka', data: []};
var series5 = {name: 'US', data: []};
var series6 = {name: 'Cuba', data: []};
$.each(lines, function(lineNo, line) {
var items = line.split(',');
//IGNORE THE LAST TWO ROWS
if (lineNo < 12) {
$.each(items, function(itemNo, item) {
if (itemNo == 0) {
series1.data.push(parseFloat(item));
} else if (itemNo == 1){
series2.data.push(parseFloat(item));
} else if (itemNo == 2){
series3.data.push(parseFloat(item));
} else if (itemNo == 3){
series4.data.push(parseFloat(item));
} else if (itemNo == 4){
series5.data.push(parseFloat(item));
} else if (itemNo == 5){
series6.data.push(parseFloat(item));
}
});
}
});
options.series.push(series1);
options.series.push(series2);
options.series.push(series3);
options.series.push(series4);
options.series.push(series5);
options.series.push(series6);
var chart = new Highcharts.Chart(options);
});