使用highcharts绘制条形图的更简单方法?

时间:2015-06-17 09:46:32

标签: javascript highcharts

我开始尝试使用Highcharts。

似乎为了绘制条形图,我需要填写这两个属性:

       xAxis: {
            categories: [
                'Jan',
                'Feb',
                'Mar',
                'Apr',
                'May',
                'Jun',
                'Jul',
                'Aug',
                'Sep',
                'Oct',
                'Nov',
                'Dec'
            ],
            crosshair: true
        },
        series: [{
            name: 'Tokyo',
            data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
        }, {
            name: 'New York',
            data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]

        }, {
            name: 'London',
            data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]
        }, {
            name: 'Berlin',
            data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]
        }

现在我有下表:

╔════╦════════╦════════╗
║ ID ║ State  ║ Number ║
╠════╬════════╬════════╣
║ A  ║ S1     ║      7 ║
║ B  ║ S1     ║      6 ║
║ B  ║ S2     ║      5 ║
║ C  ║ S3     ║      4 ║
║ C  ║ S1     ║      3 ║
╚════╩════════╩════════╝

我想要的条形图是

  1. X代表ID
  2. 对于每个ID,我想绘制每个可能State的数字。
  3. 所以我觉得我需要Highcharts的以下属性:

           xAxis: {
                categories: [
                    'A',
                    'B',
                    'C'
                ],
                crosshair: true
            },
            series: [{
                name: 'S1',
                data: [7, 6, 3]
            }, {
                name: 'S2',
                data: [0, 5, 0]    
            }, {
                name: 'S3',
                data: [0, 0, 4]
            }
            }
    

    是否正确?

    所以我似乎需要仔细转换我的原始表格(在现实生活中它可以更大,更多的ID和状态)到属性,并填充0ID s对于某些Number具有State。例如,我可能必须使用字典字典来存储转换后的表。

    有没有一种简单的方法可以实现这一目标?

1 个答案:

答案 0 :(得分:1)

是的,在你的情况下有一件事是多余的 - 它是关于填充零。而是提供索引类别并稍微改变数据格式。

例如:

name: 'S2',
data: [0, 5, 0] 

可以改为:

name: 'S2',
data: [ [1, 5] ] 

号码5将与指向1的类别相关联,该类别链接到类别名称B

所以我会按照以下步骤格式化您的数据:

  • 创建没有重复的类别数组
  • 将数据拆分为单独的系列
  • 为每个点(或行/数字 - 无论你喜欢什么称呼它)设置相应类别的索引

请注意,这只是一个建议,可能有一些内置方法,但它可以更轻松地完成。