0

我正在使用Highcharts(链接到特定演示——单击查看选项以比较下面的代码)来呈现一些数据供个人使用。

[注意:这几乎肯定是与我有关的错误,所以我并不是要暗示 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]

我的二维数组chartData[][][column][row]数据索引,我认为请求chartData[0]会返回一个数组。

也许我的问题应该是:如何从 2d 数组表示中返回 1d 数组以在 javascript 对象中设置属性/值?似乎我可能忽略了一些非常明显的东西。


编辑:

data: [24]

在 24 处绘制一个点,太棒了。

data: '24'

将数据拆分为标题,然后是值,有效地在 4 而不是 24 处绘制一个点。

因此,当我尝试将数组传递给数据字段时,表示形式变为字符串。有什么办法可以像 string.toArray 一样吗?


编辑2:

chartData[col][row]被声明为空数组

var chartData = [];

然后通过迭代 HTML 表的行和列来填充值,其中最内层的循环内容看起来像

chartData[cellIndex][rowIndex] = $(currentCell).text();
4

3 回答 3

2

虽然 chartData 可能是一个数组,但听起来 chartData[0] 是一个字符串。当您在字符串上使用数组索引时,您会在该位置获得字符,这正是您正在经历的......

渲染 3 个点,其值为 2、4 和 5,点的标题分别为 2、2 和 1……也就是说,它将数组条目拆分为标题,然后是两位数的值。

在 javascript 的数组中定义数组的方式有很多种;这是一个:

var chartData = [
  [22,24,15]
  ,['2010-9','2010-10','2010-11']
];
于 2010-12-22T22:32:38.147 回答
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),有些只是整数。

非常感谢你们俩 =)

于 2010-12-27T21:18:50.840 回答
1

好吧,这不是一个真正的答案,但可能会对您有所帮助。

Highcharts 使您能够预处理某些选项。在您的情况下,您可以执行以下操作:

options.series[0].data = new Array(1, 0, 4);

文档参考:http ://www.highcharts.com/documentation/how-to-use#options

如果失败,请在上面评论。

于 2010-12-22T21:58:35.123 回答