Highcharts 树状图(Treemap)

本章节我们将为大家介绍 Highcharts 的热点图。

我们在前面的章节已经了解了 Highcharts 配置语法。接下来让我们来看下 Highcharts 的其他配置。


树状图

series 配置

设置 series 的 type 属性为 treemap ,series.type 描述了数据列类型。默认值为 \”line\”。

var chart = {
   type: \'treemap\'
};

实例

文件名:highcharts_tree_map.htm

<html>
<head>
<meta charset=\"UTF-8\" />
<title>Highcharts 教程 | 教程</title>
<script src=\"http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\"></script>
<script src=\"http://code.highcharts.com/highcharts.js\"></script>
<script src=\"http://code.highcharts.com/modules/treemap.js\"></script>    
<script src=\"http://code.highcharts.com/modules/heatmap.js\"></script>  
</head>
<body>
<div style=\"width: 550px; height: 400px; margin: 0 auto\"></div>
<script language=\"JavaScript\">
$(document).ready(function() {    
   var title = {
      text: \'Highcharts Treemap\'   
   };       
   
   var colorAxis = {
      minColor: \'#FFFFFF\',
      maxColor: Highcharts.getOptions().colors[0]
   };
   
   var series= [{
     type: \"treemap\",
     layoutAlgorithm: \'squarified\',
     data: [{
        name: \'A\',
        value: 6,
        colorValue: 1
     }, {
        name: \'B\',
        value: 6,
        colorValue: 2
     }, {
        name: \'C\',
        value: 4,
        colorValue: 3
     }, {
        name: \'D\',
        value: 3,
        colorValue: 4
     }, {
        name: \'E\',
        value: 2,
        colorValue: 5
     }, {
        name: \'F\',
        value: 2,
        colorValue: 6
     }, {
        name: \'G\',
        value: 1,
        colorValue: 7
     }]
   }];     
      
   var json = {};     
   json.title = title;          
   json.colorAxis = colorAxis;   
   json.series = series;       
   
   $(\'#container\').highcharts(json);
});
</script>
</body>
</html>

以上实例输出结果为:


不同等级树状图

以下实例使用不同颜色来标识不同等级的树状图。

实例

文件名:highcharts_tree_levels.htm(完整源码请点击实例查看)

<html>
<head>
<meta charset=\"UTF-8\" />
<title>Highcharts 教程 | 教程</title>
<script src=\"http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\"></script>
<script src=\"http://code.highcharts.com/highcharts.js\"></script>
<script src=\"http://code.highcharts.com/modules/treemap.js\"></script>    
<script src=\"http://code.highcharts.com/modules/heatmap.js\"></script>  
</head>
<body>
<div style=\"width: 550px; height: 400px; margin: 0 auto\"></div>
<script language=\"JavaScript\">
$(document).ready(function() {    
   var title = {
      text: \'Fruit consumption\'   
   };        
   
   var series = [{
      type: \"treemap\",
      layoutAlgorithm: \'stripes\',
      alternateStartingDirection: true,
      levels: [{
         level: 1,
         layoutAlgorithm: \'sliceAndDice\',
         dataLabels: {
            enabled: true,
            align: \'left\',
            verticalAlign: \'top\',
            style: {
               fontSize: \'15px\',
               fontWeight: \'bold\'
            }
         }
      }],
      data: [{
         id: \'A\',
         name: \'Apples\',
         color: \"#EC2500\"
      }, {
         id:\'B\',
         name: \'Bananas\',
         color: \"#ECE100\"
      }, {
         id: \'O\',
         name: \'Oranges\',
         color: \'#EC9800\'
      }, {
         name: \'Anne\',
         parent: \'A\',
         value: 5
      }, {
         name: \'Rick\',
         parent: \'A\',
         value: 3
      }, {
         name: \'Peter\',
         parent: \'A\',
         value: 4
      }, {
         name: \'Anne\',
         parent: \'B\',
         value: 4
      }, {
         name: \'Rick\',
         parent: \'B\',
         value: 10
      }, {
         name: \'Peter\',
         parent: \'B\',
         value: 1
      }, {
         name: \'Anne\',
         parent: \'O\',
         value: 1
      }, {
         name: \'Rick\',
         parent: \'O\',
         value: 3
      }, {
         name: \'Peter\',
         parent: \'O\',
         value: 3
      }, {
         name: \'Susanne\',
         parent: \'Kiwi\',
         value: 2,
         color: \'#9EDE00\'
      }]
   }]; 
      
   var json = {};     
   json.title = title;            
   json.series = series;       
   
   $(\'#container\').highcharts(json);
});
</script>
</body>
</html>

以上实例输出结果为:


大数据量树状图

以下实例颜色了大数据量的树状图,具体实例数据可通过点击\”尝试一下\”查看。

文件名:highcharts_tree_largemap.htm

<html>
<head>
<meta charset=\"UTF-8\" />
<title>Highcharts 教程 | 教程</title>
<script src=\"http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\"></script>
<script src=\"http://code.highcharts.com/highcharts.js\"></script>   
<script src=\"http://code.highcharts.com/modules/treemap.js\"></script>    
<script src=\"http://code.highcharts.com/modules/heatmap.js\"></script>  
</head>
<body>
<div style=\"width: 550px; height: 400px; margin: 0 auto\"></div>
<script language=\"JavaScript\">
$(document).ready(function() { 
//省略部分 js 代码
 var data = {……};
 var points = [],
        region_p,
        region_val,
        region_i,
        country_p,
        country_i,
        cause_p,
        cause_i,
        cause_name = [];
    cause_name[\'Communicable & other Group I\'] = \'Communicable diseases\';
    cause_name[\'Noncommunicable diseases\'] = \'Non-communicable diseases\';
    cause_name[\'Injuries\'] = \'Injuries\';
    region_i = 0;
    for (var region in data) {
        region_val = 0;
        region_p = {
            id: \"id_\" + region_i,
            name: region,
            color: Highcharts.getOptions().colors[region_i]
        };
        country_i = 0;
        for (var country in data[region]) {
            country_p = {
                id: region_p.id + \"_\" + country_i,
                name: country,
                parent: region_p.id
            };
            points.push(country_p);
            cause_i = 0;
            for (var cause in data[region][country]) {
                cause_p = {
                    id: country_p.id + \"_\" + cause_i,
                    name: cause_name[cause],
                    parent: country_p.id,
                    value: Math.round(+data[region][country][cause])
                };
                region_val += cause_p.value;
                points.push(cause_p);
                cause_i++;
            }
            country_i++;
        }
        region_p.value = Math.round(region_val / country_i);
        points.push(region_p);
        region_i++;
    }
   var chart = {
      renderTo: \'container\'
   };

   var title = {
      text: \'Global Mortality Rate 2012, per 100 000 population\'   
   };        
   
   var subtitle: {
      text: \'Click points to drill down. Source: <a href=\"http://apps.who.int/gho/data/node.main.12?lang=en\">WHO</a>.\'
   };
   
   var series = [{
      type: \"treemap\",
      layoutAlgorithm: \'squarified\',
      allowDrillToNode: true,
      dataLabels: {
         enabled: false
      },
      levelIsConstant: false,
      levels: [{
         level: 1,
         dataLabels: {
            enabled: true
         },
      borderWidth: 3
      }],
      data: points
   }]; 
      
   var json = {};     
   json.title = title;            
   json.series = series;       
   
   $(\'#container\').highcharts(json);
});
</script>
</body>
</html>

以上实例输出结果为: