HighCharts разбивает мой массив данных странным образом
-
12-10-2019 - |
Вопрос
я использую Высокие чашки (Ссылка на конкретную демонстрацию-нажмите «Просмотреть параметры», чтобы сравнить код ниже), чтобы представить некоторые данные для персонального использования.
Примечание: это почти наверняка ошибка, связанная с ME, поэтому я не хочу осознавать, что HighCharts виноват-это действительно замечательный API!
При настройке Series.Data Поле объекта диаграммы, я сталкиваюсь с странными секциями массива.
Например, это работает нормально:
series: [{
name: 'seriesName',
data: [22, 24, 15]
}]
И три точки данных построены со значениями 22, 24 и 15.
Однако,
series: [{
name: 'sillySeries',
data: chartData[0]
}]
Образует 3 точки со значениями 2, 4 и 5, а названия точек составляют 2, 2 и 1 соответственно ... то есть, он разделяет записи массива на заголовок, а затем значение для двухзначных чисел.
Console.log показывает мне, что chartdata выглядит как
22,24,15,2010-9,2010-10,2010-11
(3 значения за 3 месяца)
Хотя фактические массивы больше похожи на [22,24,15] [2010-9,2010-10,2010-11
Мой 2D-ареска chartData[][]
имеет [column][row]
индексы для данных, и я решил, что прося chartData[0]
вернет массив.
Возможно, мой вопрос должен быть: как мне вернуть 1D массив из 2D -массива для установки свойств/значений в объектах JavaScript? Кажется, что я, вероятно, упускаю что -то очень очевидное.
редактировать:
data: [24]
Установки в одно очко в 24, потрясающе.
data: '24'
Разбивает данные как заголовок, а затем значение, эффективно построив точку на 4, а не 24.
Таким образом, представление становится строкой, когда я пытаюсь передать массив данные поле. В любом случае, как я могу сделать как string.toarray?
РЕДАКТИРОВАТЬ 2:
chartData[col][row]
объявляется пустым массивом
var chartData = [];
и впоследствии заполнен значениями путем итерации через ряды и столбцы таблицы HTML, где выглядит внутреннее содержание петли
chartData[cellIndex][rowIndex] = $(currentCell).text();
Решение 2
Parseint () спас день.
что-то типа
for (i=0; i<chartData[0].length; ++i) {
columnOne.push(parseInt(chartData[0][i]);
}
дал мне массив, который я мог бы затем использовать для отображения данных с полем данных в нотации объекта
data: columnOne
или более буквально
chart1.series [0] .data = columnone;
Спасибо, Джеймс за указание
В то время как Chartdata, вероятно, является массивом, похоже, что Chartdata [0] - это строка.
что приводит к моему открытию, что данные в моем массиве были на самом деле все строки, которые я держал таким образом, потому что некоторые поля являются строками, некоторые являются датами (Yyyy-MM-DD), а некоторые-просто INT.
Большое спасибо вам обоим =)
Другие советы
В то время как Chartdata, вероятно, является массивом, похоже, что Chartdata [0] - это строка. Когда вы используете индекс массива на строке, вы получаете символ в этой позиции, что именно то, что вы испытываете ...
Образует 3 точки со значениями 2, 4 и 5, а названия точек составляют 2, 2 и 1 соответственно ... то есть, он разделяет записи массива на заголовок, а затем значение для двухзначных чисел.
Есть много способов определить массивы в массивах в JavaScript; Вот один:
var chartData = [
[22,24,15]
,['2010-9','2010-10','2010-11']
];
Ну, это не реальный ответ, но может помочь вам.
Highcharts позволяет предварительно обработать определенные варианты. В вашем случае вы можете сделать что -то вроде:
options.series[0].data = new Array(1, 0, 4);
Ссылка на документ: http://www.highcharts.com/documentation/how-to-use#options
Если это не удается, прокомментируйте выше.