Highcharts 多轴图表实战|展示多维度数据可视化图表开发代码

26 阅读4分钟

今天来分享上图多坐标轴+标签的复杂图表实战案例代码:

完整可运行 HTML 代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Highcharts 多坐标轴混合图表 - 东京月度气象数据</title>
    <!-- 引入 Highcharts -->
    <script src="https://cdn.jsdelivr.net/npm/highcharts@10.3.3/highcharts.js"></script>
    <style>
        #container {
            width: 100%;
            height: 85vh;
            margin: 0 auto;
        }
    </style>
</head>
<body>
    <div id="container"></div>

<script>
Highcharts.chart('container', {
    chart: {
        // 支持XY双轴缩放
        zooming: {
            type: 'xy'
        }
    },
    // 主标题
    title: {
        text: '东京月度气象数据统计'
    },
    // 副标题
    subtitle: {
        text: '数据源:WorldClimate.com'
    },
    // X轴(月份)
    xAxis: [{
        categories: [
            '1月', '2月', '3月', '4月', '5月', '6月',
            '7月', '8月', '9月', '10月', '11月', '12月'
        ],
        crosshair: true // 十字准星
    }],
    // ================== 多Y轴核心配置 ==================
    yAxis: [
        { // 第1个Y轴:温度(右侧)
            labels: {
                format: '{value}°C',
                style: { color: Highcharts.getOptions().colors[2] }
            },
            title: {
                text: '温度',
                style: { color: Highcharts.getOptions().colors[2] }
            },
            opposite: true // 显示在右侧
        },
        { // 第2个Y轴:降雨量(左侧)
            gridLineWidth: 0,
            title: {
                text: '降雨量',
                style: { color: Highcharts.getOptions().colors[0] }
            },
            labels: {
                format: '{value} mm',
                style: { color: Highcharts.getOptions().colors[0] }
            }
        },
        { // 第3个Y轴:海平面气压(右侧)
            gridLineWidth: 0,
            title: {
                text: '海平面气压',
                style: { color: Highcharts.getOptions().colors[1] }
            },
            labels: {
                format: '{value} mb',
                style: { color: Highcharts.getOptions().colors[1] }
            },
            opposite: true
        }
    ],
    // 共享提示框
    tooltip: {
        shared: true,
        xDateFormat: '%Y-%m-%d'
    },
    // 图例
    legend: {
        layout: 'vertical',
        align: 'left',
        x: 80,
        verticalAlign: 'top',
        y: 55,
        floating: true,
        backgroundColor: 'rgba(255,255,255,0.25)'
    },
    // 数据系列(混合图表)
    series: [
        {
            name: '降雨量',
            type: 'column',      // 柱状图
            yAxis: 1,            // 绑定第2个Y轴
            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],
            tooltip: { valueSuffix: ' mm' }
        },
        {
            name: '海平面气压',
            type: 'spline',      // 虚线折线图
            yAxis: 2,            // 绑定第3个Y轴
            data: [1016, 1016, 1015.9, 1015.5, 1012.3, 1009.5, 1009.6, 1010.2, 1013.1, 1016.9, 1018.2, 1016.7],
            marker: { enabled: false },
            dashStyle: 'shortdot',
            tooltip: { valueSuffix: ' mb' }
        },
        {
            name: '温度',
            type: 'spline',      // 平滑折线图
            data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
            tooltip: { valueSuffix: ' °C' }
        }
    ],
    // 响应式适配手机
    responsive: {
        rules: [{
            condition: { maxWidth: 500 },
            chartOptions: {
                legend: { floating: false, layout: 'horizontal', align: 'center', verticalAlign: 'bottom' },
                yAxis: [{
                    labels: { align: 'right' }, showLastLabel: false
                }, {
                    labels: { align: 'left' }, showLastLabel: false
                }, {
                    visible: false
                }]
            }
        }]
    }
});
</script>
</body>
</html>

示例解析

1. 使用Highcharts的图表类型

这是 多 Y 轴混合图表,包含三种系列类型:

  • 降雨量:柱状图(column)
  • 温度:平滑折线图(spline)
  • 气压:虚线折线图(spline + shortdot)

2. 多轴核心逻辑

  • Y 轴数量:3 个
  • 左侧 Y 轴:降雨量(mm)
  • 右侧双 Y 轴:温度(℃)+ 气压(mb)
  • 每个系列通过 yAxis: 序号 绑定对应坐标轴

3. 关键功能解析

  1. 多维度同图展示 不用拆分多个图表,一图展示 降雨量、温度、气压 三类不同单位、不同量级的数据。
  2. 单位自动区分 温度:℃、雨量:mm、气压:mb,互不干扰。
  3. 共享提示框 鼠标悬浮时,同时展示同一月份的所有数据,便于综合分析。
  4. XY 缩放 支持框选缩放,适合精细化数据分析。
  5. 响应式适配 手机端自动调整布局,小屏隐藏多余坐标轴。

行业应用案例

1. 气象环境监测

  • 温度、湿度、气压、风速、降雨量 多指标同图展示
  • 环境监测大屏、气象站后台必备

2. 工业物联网 / 设备监控

  • 电压、电流、功率、温度、压力 多维度实时监控
  • 工厂设备状态可视化

3. 金融数据分析

  • 股价、成交量、换手率、市盈率 多指标对比
  • 股票 / 基金 / 大盘分析

4. 电商 / 运营数据分析

  • 销售额、订单量、访客数、转化率 同图展示
  • 月度 / 季度经营报表

5. 医疗 / 健康数据

  • 心率、血压、血氧、体温 多指标监测
  • 健康监测仪表盘

核心亮点总结

支持 N 个 Y 轴,不限数量柱状 / 折线 / 面积等类型自由混合不同单位、不同量级数据完美共存共享提示框,数据对比一目了然支持缩放、响应式、大屏展示企业级可视化标准方案


在本多维度气象数据可视化案例中,充分体现了 Highcharts 强大的多维数据渲染能力。传统可视化方案往往只能适配单一维度、单一数值区间的数据展示,多指标分析需要拆分多张图表,存在对比割裂、页面冗余的问题。

而 Highcharts 支持自定义多坐标轴体系,可实现左右双侧多 Y 轴自由排布,各坐标轴独立配置刻度、单位、配色与样式,完美兼容温度、降水、气压等差异化量级的业务指标。同时平台支持柱状图、折线图、虚线曲线图混合渲染,针对不同数据特征匹配最优展示形式。

搭配原生 XY 轴缩放、十字准星联动、多系列共享悬浮提示等交互能力,实现同一时间维度下多数据的联动分析。结合智能响应式规则,可自动适配电脑、移动端等不同终端布局,兼顾可视化专业性、交互体验与项目实用性,是企业级多维数据可视化的最优前端解决方案。