js highcharts,在创建图表系列时遇到问题
js highcharts, having problems creating the chart series
我以此为例
https://jsfiddle.net/kkulig/0k4m5d2q/
我删除了他对这些行使用硬编码数据的部分
替换了这个
var originalCategories = [new Category('A'), new Category('B'), new Category('C')].map(function(cat, i) {
cat.index = i;
return cat
});
有了这个
array_axis= ['2015', '2016', '2017', '2018', '2019', '2020'];//this comes from my DB
const originalCategories = array_axis.map(x => (new Category(x))).map((c, i) => {
c.index = i;
return c;
});
还有这个
var originalSeries = [{
data: [5, 3, 2].map((y, i) => new Point(originalCategories[i], y)) // automatically assign category
}, {
data: [1, 7, 4].map((y, i) => new Point(originalCategories[i], y)) // -//-
}];
有了这个(我认为这是代码不起作用的部分)
array_x =[{name: '15 a 24 años', data: '23.9,25.4,25.4,23.1,21.8,26.8'},
{name: '25 a 34 años', data: '20.8,24.3,20.0,17.5,18.0,20.4'},
{name: '35 a 44 años', data: '22.3,24.6,23.5,21.7,19.6,24.1'},
{name: '45 a 64 años', data: '20.9,21.6,21.3,18.0,18.8,20.6'},
{name: '65 años y más', data: '21.7,22.7,18.9,17.5,18.1,19.4'},
{name: 'Menor de 15 años', data: '36.9,40.1,35.9,34.2,33.1,37.0'}];//this also comes from my DB
var originalSeries = [];
$.each(array_x, function(key, value) {
var unformated_data = value.data;
var graph_data = unformated_data.split(',').map(parseFloat);
originalSeries.push(graph_data.map((y, i) => new Point(originalCategories[i], y))) // automatically assign category
});
但图表未显示,我收到错误消息:
jquery.min.js:2 未捕获类型错误:无法读取未定义的属性(读取 'length')
不确定我做错了什么。我还需要显示每个系列的名称(那些在 array_x 内)而不是系列 1、系列 2、...
我已经在 originalSeries 上用硬编码数据测试了代码,它工作得很好。
请注意 array_x
是一个对象 - 而不是数组,因此使用 $.each returns 会出现错误。
我正在分享我的 fiddle 代码现在的样子,供其他人查看,如果他们有兴趣解决类似的问题或计划创建类似的东西。
这是我需要完成的最终结果。我希望有人觉得这很有用。感谢 Sebastian Wędzel 的帮助。
这是我将值放入 seriesName 数组的地方
var originalSeries = [];
var seriesName = [];
$.each(array_x, function(key, value) {
var graph_data = value.data.split(',').map(parseFloat);
seriesName.push(value.name);//This I will use for my series name
originalSeries.push(graph_data.map((y, i) => new Point(originalCategories[i], y))) // automatically assign category
});
这里是我使用该数组为我的系列设置名称的地方
function filterSeries() {
var filteredSeries = [];
$.each(originalSeries, function(i, serie) {
// serie options are merged during update,
// so it's enough to initialize serie object only with data property
var newSerie = {
data: []
};
//newSerie.name = serie[i].y.name;
newSerie.name = seriesName[i];
$.each(serie, function(i, point) {
if (point.category.visible) {
newSerie.data.push(point);
}
});
filteredSeries.push(newSerie);
});
return filteredSeries;
}
我以此为例
https://jsfiddle.net/kkulig/0k4m5d2q/
我删除了他对这些行使用硬编码数据的部分
替换了这个
var originalCategories = [new Category('A'), new Category('B'), new Category('C')].map(function(cat, i) {
cat.index = i;
return cat
});
有了这个
array_axis= ['2015', '2016', '2017', '2018', '2019', '2020'];//this comes from my DB
const originalCategories = array_axis.map(x => (new Category(x))).map((c, i) => {
c.index = i;
return c;
});
还有这个
var originalSeries = [{
data: [5, 3, 2].map((y, i) => new Point(originalCategories[i], y)) // automatically assign category
}, {
data: [1, 7, 4].map((y, i) => new Point(originalCategories[i], y)) // -//-
}];
有了这个(我认为这是代码不起作用的部分)
array_x =[{name: '15 a 24 años', data: '23.9,25.4,25.4,23.1,21.8,26.8'},
{name: '25 a 34 años', data: '20.8,24.3,20.0,17.5,18.0,20.4'},
{name: '35 a 44 años', data: '22.3,24.6,23.5,21.7,19.6,24.1'},
{name: '45 a 64 años', data: '20.9,21.6,21.3,18.0,18.8,20.6'},
{name: '65 años y más', data: '21.7,22.7,18.9,17.5,18.1,19.4'},
{name: 'Menor de 15 años', data: '36.9,40.1,35.9,34.2,33.1,37.0'}];//this also comes from my DB
var originalSeries = [];
$.each(array_x, function(key, value) {
var unformated_data = value.data;
var graph_data = unformated_data.split(',').map(parseFloat);
originalSeries.push(graph_data.map((y, i) => new Point(originalCategories[i], y))) // automatically assign category
});
但图表未显示,我收到错误消息: jquery.min.js:2 未捕获类型错误:无法读取未定义的属性(读取 'length')
不确定我做错了什么。我还需要显示每个系列的名称(那些在 array_x 内)而不是系列 1、系列 2、...
我已经在 originalSeries 上用硬编码数据测试了代码,它工作得很好。
请注意 array_x
是一个对象 - 而不是数组,因此使用 $.each returns 会出现错误。
我正在分享我的 fiddle 代码现在的样子,供其他人查看,如果他们有兴趣解决类似的问题或计划创建类似的东西。
这是我需要完成的最终结果。我希望有人觉得这很有用。感谢 Sebastian Wędzel 的帮助。
这是我将值放入 seriesName 数组的地方
var originalSeries = [];
var seriesName = [];
$.each(array_x, function(key, value) {
var graph_data = value.data.split(',').map(parseFloat);
seriesName.push(value.name);//This I will use for my series name
originalSeries.push(graph_data.map((y, i) => new Point(originalCategories[i], y))) // automatically assign category
});
这里是我使用该数组为我的系列设置名称的地方
function filterSeries() {
var filteredSeries = [];
$.each(originalSeries, function(i, serie) {
// serie options are merged during update,
// so it's enough to initialize serie object only with data property
var newSerie = {
data: []
};
//newSerie.name = serie[i].y.name;
newSerie.name = seriesName[i];
$.each(serie, function(i, point) {
if (point.category.visible) {
newSerie.data.push(point);
}
});
filteredSeries.push(newSerie);
});
return filteredSeries;
}