2015-06-17 26 views
0

我开始尝试使用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的编号。

所以看起来我需要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■不要有Number谁对于某些State s。例如,我可能不得不使用字典词典来存储转换后的表格。

有没有简单的方法来实现呢?

回答

1

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

例如:

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

可以改成:

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

和数量5将连接到该类别索引1,可链接到类别名称B

所以我会在这些步骤中格式化的数据:

  • 创建类别没有重复阵列
  • 分割的数据到每个点单独的系列
  • (或行/数字 - 无论你喜欢叫它它)设置相应类别的索引

请注意,这只是一个建议,可能有一些内置方法,但它可以做得更容易一些,但是。