【问题标题】:Use an array of objects for series data in Highcharts在 Highcharts 中为系列数据使用对象数组
【发布时间】:2014-07-16 13:41:26
【问题描述】:

我有一组要在高图中显示的对象。每个对象都有一个名称和一个值。

我试图通过这样做来让它工作

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,告诉它每条数据的“名称”将是该特定对象的名称值,并且数据将是绑定到该特定对象的值字段。有没有办法做到这一点?还是 highcharts 认为“不好”的唯一选择?

【问题讨论】:

    标签: highcharts


    【解决方案1】:

    所以我找到了解决方案。

    得到数据后,我做到了

    $.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 字段有两个部分,datanameName 不适用于 data,这将是轴的名称。

    所以data 是一个键/值对数组。

    data: [ {[key1, value1]}, {[key2, value2]}, {[key3, value3]} ]

    name 将是“主要”标签 - 例如“我的数据资料”。

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

    【讨论】:

    • 嗨!您能否为上述场景展示一些示例 sn-p。非常感谢。谢谢
    【解决方案2】:
            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' 是关键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多