我想要在highcharts中显示一个对象数组。每个对象都有一个名称和一个值。
我试图通过
让这个工作var objects = objectArray[]; // objectArray being an array of the objects I want data on
var objectNames = nameArray[]; // This being an array of all the names of the objects
var objectValues = valueArray[]; // An array of all the values of the objects
series: [{
data: objects.value,
name: objects.name
}]
这让我大吃一惊。所以我尝试建立这样的系列:
series: [{
data: objectValues,
name: objectNames
}]
这给了我关于值的数据,但是名称是objectNames数组中的所有名称...对于每一个数据。所以我尝试使用
series: [{
data: objectValues
},
{
data: objectNames
}]
这导致看到了objectValues的图表,并在图例中看到了名称的另一个选项 - 这是完全不可接受的,因为没有必要设置一系列标签,对吗?
所以我决定以编程方式构建一个系列,使用foreach循环然后将其传递给构造函数。但是,http://www.highcharts.com/docs/getting-started/how-to-set-options/说这是“糟糕的代码”。
我想要的是能够将一组对象传递给highcharts,告诉它每个数据的'name'将成为该特定对象的名称值,并且数据将是绑定到该特定对象的值字段。有没有办法做到这一点?或者是highcharts认为“坏”的唯一选择?
答案 0 :(得分:6)
所以我找到了解决方案。
获取数据后,我做了
$.each(item, function (index, value) {
objects.push([value.name, value.value]);
});
然后用
绑定我的系列series: [{
data: objects,
name: 'Value Type Description'
}]
所以我有"价值类型描述"在图例中,但当我将鼠标悬停在特定点上时,我将名称作为标签,并以图表形式显示有效数据。
我在http://api.highcharts.com/highcharts#series发现如果你有一个二维数组的数组,你可以只传递一个字符串作为第一个参数,它会将它解析为该点的标签。
编辑:每个请求的示例。
因此,series
字段,data
和name
分为两部分。 Name
不适用于data
,这将是轴的名称。
所以data
是键/值对的数组。
data: [
{[key1, value1]},
{[key2, value2]},
{[key3, value3]}
]
name
就是"主要"标签将是 - "我的数据资料"例如。
然后,当您加载图表时,在图例中它应该说"我的数据资料",但是当您将鼠标悬停在特定点上时,比如第一个,它将显示Key1 Value1信息。
答案 1 :(得分:5)
data: [{
name: 'Point 1',
y: 1,
test1:9,
test2:'ddaf'
}, { -------> right
name: 'Point 2',
y: 5,
test1:12,
test2:'ddddaf'
}]
data: [{
my_name: 'Point 1',
y: 1,
test1:9,
test2:'ddaf'
}, { -------> we change 'name' to 'my_name',
my_name: 'Point 2', then the name you want to show become
y: 5, 'Slice', instead of 'Point 1','Point 2'
test1:12,
test2:'ddddaf'
}]
data: [{
my_name: 'Point 1',
my_y: 1,
test1:9,
test2:'ddaf'
}, { -------> Now,we get nothing.
my_name: 'Point 2',
my_y: 5,
test1:12,
test2:'ddddaf'
}]
所以,'name'和'y'是关键。