HighCharts разбивает мой массив данных странным образом

StackOverflow https://stackoverflow.com/questions/4513653

  •  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

Если это не удается, прокомментируйте выше.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top