1. 项目背景与核心需求
在商业智能(BI)数据可视化场景中,组合图(Combo Chart)是一种极其常见且实用的图表类型。它允许我们在同一坐标系下展示不同量纲的指标,通过左Y轴和右Y轴的差异化配置,实现数据的多维对比分析。最近在开发一个销售分析看板时,我需要实现这样一个需求:在同一图表中同时展示"订单数量"(绝对值)和"转化率"(百分比),且要求左Y轴显示为整数刻度,右Y轴显示为百分比格式。
这个需求看似简单,但在VChart实现过程中遇到了几个技术难点:
- 双Y轴的同步刻度计算问题
- 百分比数值的格式化显示
- 不同系列间的视觉区分
- 图例与提示框的联动交互
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. VChart组合图基础配置
2.1 基本结构定义
VChart是面向数据分析场景的可视化解决方案,其组合图通过series字段定义多个系列。以下是一个基础配置框架:
javascript复制const spec = {
type: 'common',
series: [
{
type: 'bar',
// 柱状图配置
},
{
type: 'line',
// 折线图配置
}
],
axes: [
{
orient: 'left',
// 左Y轴配置
},
{
orient: 'right',
// 右Y轴配置
}
]
};
2.2 双Y轴的关键参数
实现双Y轴需要特别注意以下配置项:
javascript复制axes: [
{
orient: 'left',
type: 'linear',
min: 0,
// 强制显示整数刻度
tick: {
tickCount: 5,
formatMethod: (value) => Math.floor(value).toString()
}
},
{
orient: 'right',
type: 'linear',
// 百分比格式化
label: {
formatMethod: (value) => (value * 100).toFixed(1) + '%'
},
// 范围设置为0-1
min: 0,
max: 1
}
]
关键提示:右Y轴的百分比显示需要特别注意数据预处理。如果原始数据是0.15这样的数值,直接配置格式化即可;但如果原始数据是15%,需要先转换为0.15再传入图表。
3. 完整实现方案
3.1 数据准备与结构设计
假设我们有以下销售数据需要展示:
javascript复制const data = [
{ date: '2023-01', orders: 1250, conversion: 0.15 },
{ date: '2023-02', orders: 1380, conversion: 0.18 },
// 其他月份数据...
];
对应的数据系列配置:
javascript复制series: [
{
type: 'bar',
data: {
id: 'barData',
values: data
},
xField: 'date',
yField: 'orders',
seriesField: 'date',
// 柱状图样式定制
bar: {
