You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Recharts创建显示条形间隙连线的半圆饼/仪表盘图表?

用Recharts实现带间隙信息的半圆图表方案

当然可以用Recharts实现这种效果。核心思路是通过双层半圆条形图叠加,一层展示主条形信息,另一层调整参数模拟间隙区域的内容展示。

具体实现步骤如下:

  • 用PolarBarChart创建基础半圆条形图,设置startAngle={180}和endAngle={0}实现半圆形态,这一层对应你当前的主条形内容。
  • 叠加第二个PolarBarChart,调整它的innerRadius和outerRadius,让条形刚好落在主条形的间隙位置,同时将间隙需要展示的数据绑定到这一层。
  • 给两层条形设置不同填充色,通过label属性分别展示主条形和间隙的文本信息。

简单代码示例:

import { PolarBarChart, PolarBar, ResponsiveContainer } from 'recharts';

const chartData = [
  { name: '项1', mainValue: 80, gapValue: 20 },
  { name: '项2', mainValue: 70, gapValue: 30 },
  { name: '项3', mainValue: 90, gapValue: 10 },
];

export default function HalfCircleGapChart() {
  return (
    <ResponsiveContainer width="100%" height={400}>
      {/* 主条形层 */}
      <PolarBarChart
        data={chartData}
        startAngle={180}
        endAngle={0}
        innerRadius="60%"
        outerRadius="80%"
      >
        <PolarBar dataKey="mainValue" fill="#2ecc71" label={{ position: 'inside', fill: '#fff' }} />
      </PolarBarChart>
      {/* 间隙信息层 */}
      <PolarBarChart
        data={chartData}
        startAngle={180}
        endAngle={0}
        innerRadius="40%"
        outerRadius="60%"
      >
        <PolarBar dataKey="gapValue" fill="#bdc3c7" label={{ position: 'inside', fill: '#333' }} />
      </PolarBarChart>
    </ResponsiveContainer>
  );
}

额外注意事项:

  • 微调两层图表的半径参数,确保间隙层条形精准卡在主条形的空白区域。
  • 若需要更精细的角度控制,可通过angleAxis配置调整单条条形的角度范围,避免重叠。
  • 可自定义标签样式、位置,或添加tooltip展示更详细的信息。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:15:29