You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ant Design Charts(React)折线图与柱状图双Y轴组合实现咨询

实现双Y轴混合折线+柱状图(Ant Design Charts React)

嘿,这个需求在Ant Design Charts里很好实现!核心就是用它专门的DualAxes(双轴)组件,把折线和柱状图整合到同一个容器里,自动共用X轴,同时给左右Y轴设置不同的数据范围来适配你的两组数据。下面是具体的实现思路和代码示例:

核心实现步骤

  • 配置双Y轴:通过yAxis数组分别定义左右两个Y轴的位置、数据范围、名称,让左侧对应折线的700-800区间,右侧对应柱状的8-10区间。
  • 绑定系列数据:分别创建折线和柱状两个系列,各自绑定对应的Y轴数据字段,确保数据和轴匹配。
  • 共用X轴:只需要指定一个xField(时间维度),两个系列会自动对齐这个X轴。

完整代码示例

import React from 'react';
import { DualAxes } from '@ant-design/charts';

const MixedChart = () => {
  // 模拟你的时间维度数据,替换成实际业务数据即可
  const chartData = [
    { time: '1月1日', lineValue: 720, barValue: 8.5 },
    { time: '1月2日', lineValue: 755, barValue: 9.1 },
    { time: '1月3日', lineValue: 782, barValue: 8.7 },
    { time: '1月4日', lineValue: 768, barValue: 9.6 },
    { time: '1月5日', lineValue: 790, barValue: 9.0 },
  ];

  const config = {
    // 共用的X轴字段(时间)
    xField: 'time',
    // 两个Y轴对应的数据字段
    yField: ['lineValue', 'barValue'],
    // 配置左右两个Y轴
    yAxis: [
      {
        name: '折线数据',
        position: 'left',
        min: 700, // 锁定折线数据的最小值
        max: 800, // 锁定折线数据的最大值
        label: {
          formatter: (value) => `${value}`, // 自定义轴标签显示
        },
      },
      {
        name: '柱状数据',
        position: 'right',
        min: 8, // 锁定柱状数据的最小值
        max: 10, // 锁定柱状数据的最大值
        label: {
          formatter: (value) => `${value}`,
        },
      },
    ],
    // 定义两个图表系列:折线 + 柱状
    series: [
      {
        type: 'line',
        yField: 'lineValue',
        smooth: true, // 可选:让折线更平滑
        color: '#1890ff', // 折线颜色
        lineStyle: {
          lineWidth: 2, // 折线粗细
        },
      },
      {
        type: 'column',
        yField: 'barValue',
        color: '#2fc25b', // 柱状颜色
        columnStyle: {
          radius: [4, 4, 0, 0], // 可选:给柱状图加圆角
        },
      },
    ],
    // 自定义tooltip,让鼠标悬浮时同时显示两组数据
    tooltip: {
      formatter: (datum) => ({
        name: datum.time,
        value: [
          { name: '折线数据', value: datum.lineValue },
          { name: '柱状数据', value: datum.barValue },
        ],
      }),
    },
    // 图例配置,放在顶部方便查看
    legend: {
      position: 'top',
    },
  };

  return <DualAxes {...config} />;
};

export default MixedChart;

额外注意事项

  • DualAxes是Ant Design Charts专门为双轴场景封装的组件,比手动拼接两个独立图表更省心,自动处理X轴对齐、响应式适配等问题。
  • 如果你的数据范围不是固定的,也可以去掉minmax配置,让组件自动计算合适的轴范围,不过固定范围能让图表展示更稳定。
  • 可以根据需求自定义系列样式,比如折线的标记点、柱状图的宽度,只需要在对应的series配置里添加marker或调整columnStyle即可。

内容的提问来源于stack exchange,提问作者SoulSlayer

火山引擎 最新活动