Estoy usando esto como un ejemplo
https://jsfiddle.net/kkulig/0k4m5d2q/
Eliminé las partes donde usa datos codificados para estas líneas
Reemplazó esto
var originalCategories = [new Category('A'), new Category('B'), new Category('C')].map(function(cat, i) { cat.index = i; return cat });Con este
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; });y esto
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)) // -//- }];Con esto (creo que esta es la parte del código que no funciona)
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 });pero el gráfico no se muestra y recibo un mensaje de error: jquery.min.js: 2 TypeError no detectado: no se pueden leer las propiedades de undefined (leyendo 'longitud')
no estoy seguro de lo que estoy haciendo mal. También necesito mostrar el nombre de cada serie (los que están dentro de array_x) en lugar de la serie 1, la serie 2,...
Ya probé el código con datos codificados en la serie original y funciona bien.
Tenga en cuenta que array_x es un objeto, no una matriz, por lo que usar $.each devuelve un error.
Estoy compartiendo mi violín de cómo se ve el código ahora para que todos los demás lo vean, si están interesados en resolver un problema similar o planean crear algo similar a esto.
Este es el resultado final de lo que necesitaba lograr. Espero que alguien encuentre esto útil. Gracias a Sebastian Wędzel por la ayuda.
Aquí es donde presiono los valores dentro de la matriz 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 });Y aquí es donde configuro los nombres de mi serie usando esa matriz
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; }