Highcharts 双 Y 轴分组错位柱状图・代码详解

作者:Highcharts.js日期:2026/8/30

双 Y 轴、非分组错位并列柱状图,同时展示两类指标:

  • 左轴:员工数量(人数,普通数值)
  • 右轴:利润(百万美元,金额) 同一分类下 4 根柱子错开摆放,不会互相重叠,用来对比「优化前 / 优化后」两组数据差异。

示例代码

1Highcharts.chart('container', {
2    chart: {
3        type: 'column'
4    },
5    title: {
6        text: 'Efficiency Optimization by Branch'
7    },
8    xAxis: {
9        categories: [
10            'Seattle HQ',
11            'San Francisco',
12            'Tokyo'
13        ]
14    },
15    yAxis: [{
16        min: 0,
17        title: {
18            text: 'Employees'
19        }
20    }, {
21        title: {
22            text: 'Profit (millions)'
23        },
24        opposite: true
25    }],
26    legend: {
27        shadow: false
28    },
29    tooltip: {
30        shared: true
31    },
32    plotOptions: {
33        column: {
34            grouping: false,
35            shadow: false,
36            borderWidth: 0
37        }
38    },
39    series: [{
40        name: 'Employees Optimized',
41        color: 'rgba(126,86,134,1)',
42        data: [140, 90, 40],
43        pointPadding: 0.3,
44        pointPlacement: -0.2
45    }, {
46        name: 'Profit Optimized',
47        color: 'rgba(186,60,61,.9)',
48        data: [203.6, 198.8, 208.5],
49        tooltip: {
50            valuePrefix: '$',
51            valueSuffix: ' M'
52        },
53        pointPadding: 0.3,
54        pointPlacement: 0.2,
55        yAxis: 1
56    }, {
57        name: 'Employees',
58        color: 'rgba(165,170,217,1)',
59        data: [150, 73, 20],
60        pointPadding: 0.4,
61        pointPlacement: -0.2
62    }, {
63        name: 'Profit',
64        color: 'rgba(248,161,63,.9)',
65        data: [183.6, 178.8, 198.5],
66        tooltip: {
67            valuePrefix: '$',
68            valueSuffix: ' M'
69        },
70        pointPadding: 0.4,
71        pointPlacement: 0.2,
72        yAxis: 1
73    }]
74});

核心关键参数讲解

1、grouping: false

默认 grouping:true:同 X 分类的柱子会自动紧紧并排。 设置为 false → 取消自动分组,柱子位置交给 pointPlacement 手动偏移,实现错位效果。

2、pointPlacement(偏移量)

  • 负数:柱子向 X 轴标签左侧 偏移
  • 正数:柱子向 X 轴标签右侧 偏移 示例 -0.20.2,让员工柱子靠左、利润柱子靠右。

取值范围一般 -0.5 ~ 0.5,超出范围柱子会跑到别的分类下。

3、双 Y 轴绑定 yAxis: 1

yAxis 数组下标从 0 开始

  • yAxis:0 → 左轴(员工数)
  • yAxis:1 → 右轴(利润) 系列里写上 yAxis:1,该条数据就使用右侧坐标轴刻度。

4、tooltip.shared: true

鼠标悬停某一个 X 点位,一次性把 4 条系列的数据全部展示出来,适合多指标对比场景。

适用业务场景

  1. 同一维度两套不同量级指标对比(人数 vs 营收、产量 vs 能耗)
  2. 优化前后、改造前后效果对比柱状图
  3. 大屏看板双指标错位对比图表

常见坑点

  1. 忘记关闭 grouping:falsepointPlacement 偏移不生效
  2. 偏移值过大,柱子跨到相邻分类,布局错乱
  3. 双 Y 轴忘记写 opposite:true,两根坐标轴重叠在一起

Highcharts 双 Y 轴分组错位柱状图・代码详解》 是转载文章,点击查看原文


相关推荐


OpenCV实战——透视变换与身份证号码模板识别
clorinda2026/8/22

一、前言》》》》》》》 在现实生活中,发票、身份证和纸张通常不是完全正对着摄像头拍摄的。由于拍摄角度不同,原本的矩形会变成梯形,文字也会发生倾斜。 如果直接对这种图片进行识别,效果往往不理想。因此,通常需要先完成透视变换,把图像矫正成正面视图,再进行二值化、轮廓检测和模板匹配。 本篇主要介绍: 1,透视变换的原理; 2,四个角点的排序; 3,发票图像矫正; 4,形态学闭运算; 5,使用模板匹配识别身份证号码。 二、透视变换的基本原理 透视变换可以把原图中的任意四边形转换成一


Rust Borrow借用详解:不转移所有权访问数据
程序员爱钓鱼2026/8/9

《Rust编程实战》系列第35篇 在上一篇文章中,我们学习了Rust的Copy,了解了哪些轻量数据类型可以在赋值或传参时自动复制。本篇继续进入Rust所有权体系中非常重要的概念: Borrow 中文通常称为“借用”。 前面我们已经知道,String、Vec等非Copy类型传递给另一个变量或函数时,通常会发生所有权移动: fn print_name(name: String) { println!("{}", name); } fn main() { let name = S


Rust图像处理第22节-从RGB到YCbCr: 让亮度和颜色分家
花褪残红青杏小2026/7/31

🦀 Rust + WASM 实战系列 第 22 篇 阅读时间:约 8 分钟 | 实战可运行 📌 写在前面 前面 21 篇,所有图像都是拿 R、G、B 三个数表示的。这一篇换一套坐标系:一个亮度 + 两个色度。 手机里的每一张照片、你看的每一个视频,存进文件之前都会先做这个转换。原因很简单:人眼对亮度极其敏感,对颜色极其迟钝,把两者分开之后,颜色那部分可以随便砍。 数学上,它就是一个 3×3 矩阵(19节的矩阵 × 向量)加它的逆矩阵(21节的 try_inverse) 🚀 TL;DR


🤯 面试被问 AI Workflow 和 Agent 有啥区别?3 张图 + 2 段代码讲清楚!
ReBound2026/7/23

🤯 面试被问 AI Workflow 和 Agent 有啥区别?3 张图 + 2 段代码讲清楚! 摘要:Workflow 和 Agent 到底有啥区别?为什么 Coze 工作流和 ReAct Agent 看起来都在"执行任务",本质却完全不同?本文从面试翻车经历出发,结合 Anthropic 官方定义、ReAct 框架、完整代码示例和实战选型指南,帮你彻底搞懂这对最容易混淆的 AI 概念。 📌 前言 上周面试,面试官笑眯眯地问了一句: "你说说 AI Workflow 和 Agent


大模型入门:从“猜词游戏“到“超级大脑“,一篇读懂 AI 大模型
修己xj2026/7/15

2023 年初,ChatGPT 横空出世,"大模型"三个字一夜之间刷爆了所有人的朋友圈。有人拿它写代码,有人拿它写情书,还有人拿它辅导孩子做数学——而且它居然真的会。 可当你真正想搞懂"大模型到底是什么"时,迎面而来的却是满屏的"Transformer""自注意力""千亿参数",瞬间劝退。 别慌。这篇文章,我们用打比方的方式,把大模型从里到外讲清楚。 一、什么是大模型?先搞懂"大"在哪 今天大家口中的大模型,通常特指大语言模型(LLM,Large Language Model)。ChatGPT


【Java实习面试算法冲刺】双指针
ZenithSourceQuest2026/7/6

第2类题型:双指针 为什么双指针题看起来不难,你一到面试就容易写乱 很多同学第一次刷双指针时,会觉得这类题比哈希表还“直观”。因为代码通常不长,变量也常常只有 left、right、slow、fast 四个名字。但真正到了面试现场,双指针反而很容易暴露出两类问题: 你会套模板,但说不清两个指针各自代表什么。你知道要移动某一边,却解释不出“为什么这样移动不会漏解”。你能把 三数之和 写个大概,却总在去重和边界上翻车。你把“会写代码”当成“理解题型”,结果一换题面就不稳。 如果你


论虚拟线程与 Kotlin IO 协程:资源开销、时长、高并发表现及适用场景与技术选型思考
zimoyin2026/6/28

在现代并发编程中,虚拟线程(由 Java 20+ 引入)和 Kotlin IO 协程(基于 Dispatchers.IO)是两种高效处理异步任务的技术框架。在资源开销、时长(特别是长时间 IO)、高并发场景表现、以及何时选择合适方案等方面各有特点。本文将逐一展开对比分析。 1. 资源开销对比 虚拟线程和协程的核心开销差异源于其底层设计原理: 维度虚拟线程Kotlin IO 协程关键差异内存开销固定栈机制:默认约 1MB1\text{MB}1MB 占⽤[注1]动态内存分配:2KB∼512KB2


当 AI 学会「自己催自己」:对 Loop Engineering 的理解与思考
莫西很trouble2026/6/19

先说一个让我「咯噔」一下的瞬间 前段时间看到 Claude Code 负责人 Boris Cherny 说了句话,大意是:我已经不写 Prompt 了,我只写 Loop 我的第一反应是:啊?Prompt 不是刚学会怎么写好吗?怎么就又过时了? 但仔细想了下这句话背后的意思,突然意识到它不是在讲什么新技术,而是在讲一个我们早就该意识到的问题 ——如果每次用 AI,你都要在它身边喊「继续」「还是报错」「你改了啥」「回滚」,那说明你其实不是在用工具,你是在当监工 而 Loop Engineer


限流:从单机QPS计数器到分布式三层防御体系
程序员小策2026/6/11

大家好,我是程序员小策。 先说一个反直觉的事实:加了限流之后,你系统的成功请求数量反而可能变多。 听起来很荒诞对吧?限流的字面意思就是"拦住一部分请求",拦住了怎么可能变多? 但数据不会骗人: 场景总请求数成功数成功率不限流5000000%加了限流50000500010% 不限流的时候,50000 个请求全部涌入数据库,连接池打满,超时重试又制造了一倍流量,雪崩导致所有接口全部失败——包括那些只想来浏览商品页的正常用户。 加了限流之后,50000 个请求里被拦掉了 45000 个,但这


Java学习笔记之泛型
飞翔网2026/6/4

前言 写 Java 代码时,你一定见过 List<String>、Map<Integer, String> 这种尖括号写法。这就是泛型(Generics)——Java 5 引入的最重要的语言特性之一。在没有泛型的时代,集合里塞什么都可以,取出来必须强制转型,稍不注意就 ClassCastException(类转型异常)。泛型的出现让类型安全从运行时提到了编译期。 但这只是泛型的冰山一角。泛型真正的难点在于类型擦除、通配符、PECS 原则——理解了这些,你才算真正掌握了泛型。 一、概念:什么是泛

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读