在Highcharts中使用对象数组来处理系列数据

Bar*_*cer 5 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
 }]
Run Code Online (Sandbox Code Playgroud)

这让我感到震惊.所以我尝试构建这样的系列:

 series: [{
    data: objectValues,
    name: objectNames
 }]
Run Code Online (Sandbox Code Playgroud)

这给了我数值的数据,但名称是objectNames数组中的所有名称...对于每一个数据.所以我尝试使用

series: [{
    data: objectValues
},
{   
    data: objectNames
}]
Run Code Online (Sandbox Code Playgroud)

这导致看到了objectValues的图表,并在图例中看到了名称的另一个选项 - 这是完全不可接受的,因为有一系列标签没有意​​义,对吧?

所以我决定以编程方式构建一个系列,使用foreach循环然后将其传递给构造函数.但是,http : //www.highcharts.com/docs/getting-started/how-to-set-options/说这是"坏代码".

我想要的是能够将一个对象数组传递给highcharts,告诉它每个数据的'name'将是该特定对象的名称值,并且数据将被绑定到特定对象的值字段.有没有办法做到这一点?或者是highcharts认为"坏"的唯一选择?

Bar*_*cer 7

所以我找到了解决方案.

获得数据后,我做到了

$.each(item, function (index, value) {
    objects.push([value.name, value.value]);
});
Run Code Online (Sandbox Code Playgroud)

然后绑定我的系列

series: [{
     data: objects,
     name: 'Value Type Description'
}]
Run Code Online (Sandbox Code Playgroud)

所以我在图例中有"值类型描述",但是当我将鼠标悬停在特定点上时,我将名称作为标签,并以图表形式显示有效数据.

我在http://api.highcharts.com/highcharts#series发现如果你有一个二维数组的数组,你可以只传递一个字符串作为第一个参数,它会将它解析为该点的标签.

编辑:每个请求的示例.

所以你有两件作品series,dataname. Name不适用于data,这将是轴的名称.

data键/值对的数组也是如此.

$.each(item, function (index, value) {
    objects.push([value.name, value.value]);
});
Run Code Online (Sandbox Code Playgroud)

data: [ {[key1, value1]}, {[key2, value2]}, {[key3, value3]} ]"主要"标签将是什么 - 例如"我的数据资料".

然后,当您加载图表时,在图例中它应该显示"我的数据资料",但是当您将鼠标悬停在特定点上时,比如第一个,它将显示Key1 Value1信息.

  • 嗨!你能否为上述场景展示一些示例片段.非常感谢.谢谢 (2认同)

小智 5

        data: [{
            name: 'Point 1',
            y: 1,
            test1:9,
            test2:'ddaf'
        }, {                         ------->      right
            name: 'Point 2',
            y: 5,
            test1:12,
            test2:'ddddaf'
        }]
Run Code Online (Sandbox Code Playgroud)
        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'
        }]
Run Code Online (Sandbox Code Playgroud)
        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'
        }]
Run Code Online (Sandbox Code Playgroud)

所以,'name'和'y'是关键.