Highcharts 下钻(Drilldown)柱状图 Demo

功能:点击顶层柱状图,可以向下展开查看浏览器各版本细分市场份额,典型上钻‑下钻交互图表

HTML预览代码

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>浏览器市场份额-下钻柱状图</title>
    <!-- 必须额外引入 drilldown 下钻模块 -->
    <script src="https://code.highcharts.com/highcharts.js"></script>
    <script src="https://code.highcharts.com/modules/drilldown.js"></script>
</head>
<body>
    <div id="container" style="width:100%;height:500px;"></div>

<script>
Highcharts.chart('container', {
    chart: {
        type: 'column'
    },
    title: {
        text: '浏览器市场份额 · 2022年1月'
    },
    subtitle: {
        text: '点击柱子查看各版本明细。数据来源:<a href="http://statcounter.com" target="_blank">statcounter.com</a>'
    },
    accessibility: {
        announceNewData: {
            enabled: true
        }
    },
    xAxis: {
        type: 'category'
    },
    yAxis: {
        title: {
            text: '市场占比(%)'
        }
    },
    legend: {
        enabled: false
    },
    plotOptions: {
        series: {
            borderWidth: 0,
            dataLabels: {
                enabled: true,
                format: '{point.y:.1f}%'
            }
        }
    },
    tooltip: {
        headerFormat: '<span style="font-size:11px">{series.name}</span><br>',
        pointFormat: '<span style="color:{point.color}">{point.name}</span>: ' +
            '<b>{point.y:.2f}%</b> 占比<br/>'
    },
    series: [
        {
            name: '浏览器',
            colorByPoint: true,
            data: [
                {
                    name: 'Chrome',
                    y: 63.06,
                    drilldown: 'Chrome'
                },
                {
                    name: 'Safari',
                    y: 19.84,
                    drilldown: 'Safari'
                },
                {
                    name: 'Firefox',
                    y: 4.18,
                    drilldown: 'Firefox'
                },
                {
                    name: 'Edge',
                    y: 4.12,
                    drilldown: 'Edge'
                },
                {
                    name: 'Opera',
                    y: 2.33,
                    drilldown: 'Opera'
                },
                {
                    name: 'IE浏览器',
                    y: 0.45,
                    drilldown: 'Internet Explorer'
                },
                {
                    name: '其他',
                    y: 1.582,
                    drilldown: null
                }
            ]
        }
    ],
    drilldown: {
        breadcrumbs: {
            position: {
                align: 'right'
            }
        },
        series: [
            {
                name: 'Chrome',
                id: 'Chrome',
                data: [
                    ['v65.0',0.1],
                    ['v64.0',1.3],
                    ['v63.0',53.02],
                    ['v62.0',1.4],
                    ['v61.0',0.88],
                    ['v60.0',0.56],
                    ['v59.0',0.45],
                    ['v58.0',0.49],
                    ['v57.0',0.32],
                    ['v56.0',0.29],
                    ['v55.0',0.79],
                    ['v54.0',0.18],
                    ['v51.0',0.13],
                    ['v49.0',2.16],
                    ['v48.0',0.13],
                    ['v47.0',0.11],
                    ['v43.0',0.17],
                    ['v29.0',0.26]
                ]
            },
            {
                name: 'Firefox',
                id: 'Firefox',
                data: [
                    ['v58.0',1.02],
                    ['v57.0',7.36],
                    ['v56.0',0.35],
                    ['v55.0',0.11],
                    ['v54.0',0.1],
                    ['v52.0',0.95],
                    ['v51.0',0.15],
                    ['v50.0',0.1],
                    ['v48.0',0.31],
                    ['v47.0',0.12]
                ]
            },
            {
                name: 'IE浏览器',
                id: 'Internet Explorer',
                data: [
                    ['v11.0',6.2],
                    ['v10.0',0.29],
                    ['v9.0',0.27],
                    ['v8.0',0.47]
                ]
            },
            {
                name: 'Safari',
                id: 'Safari',
                data: [
                    ['v11.0',3.39],
                    ['v10.1',0.96],
                    ['v10.0',0.36],
                    ['v9.1',0.54],
                    ['v9.0',0.13],
                    ['v5.1',0.2]
                ]
            },
            {
                name: 'Edge',
                id: 'Edge',
                data: [
                    ['v16',2.6],
                    ['v15',0.92],
                    ['v14',0.4],
                    ['v13',0.1]
                ]
            },
            {
                name: 'Opera',
                id: 'Opera',
                data: [
                    ['v50.0',0.96],
                    ['v49.0',0.82],
                    ['v12.1',0.14]
                ]
            }
        ]
    }
});
</script>
</body>
</html>

核心参数详细讲解

1、依赖模块

复制代码
<script src="https://code.highcharts.com/modules/drilldown.js"></script>

下钻图表必须额外加载 drilldown 模块,否则点击无反应

2、顶层数据与下钻绑定字段

复制代码
{
    name: 'Chrome',
    y: 63.06,
    drilldown: 'Chrome'
}
  • y:顶层展示数值
  • drilldown下钻关联ID ,和下方drilldown.series里的id一一对应;
  • drilldown: null:该柱子禁止下钻(示例‑‑其他)。

3、drilldown 下钻数据集

drilldown.series数组存放每一项点击后展示的子级明细; id必须和顶层drilldown字段的值完全一致,图表才能匹配跳转。

4、breadcrumbs 面包屑导航

复制代码
breadcrumbs: {
    position: { align: 'right' }
}

下钻后图表右上角出现返回顶层的导航按钮,点击即可上钻(返回父级图表)

5、colorByPoint:true

每个柱子独立分配不同颜色,适合分类占比对比。

业务适用场景

  1. 一级行业 → 二级细分行业产值下钻
  2. 省份 → 地市人口、GDP下钻
  3. 总销量 → 各产品明细销量
  4. 大屏看板多层级数据探查

常见踩坑点

  1. 忘记引入drilldown.js模块,点击柱子无效果
  2. 顶层drilldown字符串和子级id大小写不一致,匹配失败
  3. 子级data格式:简写二维数组[['名称',数值]]
相关推荐
达梦数据7 小时前
DMDRS空间数据类型说明:Oracle、DM8、MySQL空间数据类型映射
数据库·mysql·oracle
白远山7 小时前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析
达梦数据7 小时前
DMDRS服务与模块的运行步骤
数据库
让学习成为一种生活方式8 小时前
PMGD:植物线粒体基因组数据库--Journal of Integrative Plant Biology
数据库
达梦数据8 小时前
达梦数据复制软件DMDRS搭建部署示例:源数据库DM8到目标数据库DM8一对一数据同步
数据库
IT_Octopus9 小时前
从一个应用开发者的角度,搞懂大数据查询的完整链路
java·大数据·数据库
Htr_9 小时前
Creem 2.0 使用指南:面向 AI 构建时代的资金平台
android·数据库·人工智能·ui·photoshop
我是大猴子9 小时前
reids的数据结构的应用场景
数据库
螺蛳粉 螺蛳粉9 小时前
mysql的备份与恢复
linux·运维·数据库·mysql
艾醒(AiXing-w)10 小时前
LangChain 1.0 智能体开发(三):Agent 记忆管理——从短期对话到跨会话长期记忆
数据库·人工智能·langchain