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

Recharts堆叠柱状图如何仅显示柱子且占满容器消除多余空白?

解决方案

1. 移除右侧、底部空白区域

空白是Recharts坐标轴默认的区间padding、以及柱子间隙的默认配置导致的,按以下规则修改属性即可:

  • 给<XAxis>添加domain={[0, 'dataMax']}属性,关闭X轴数值区间的默认留白
  • 给<XAxis>添加padding={{ left: 0, right: 0 }}属性,移除X轴两端的内边距
  • 给<YAxis>添加padding={{ top: 0, bottom: 0 }}属性,移除Y轴上下的内边距
  • 给<BarChart>添加barGap={0}、barCategoryGap={0}属性,移除柱子之间、不同类目柱子的默认间隙

2. 固定40px柱子高度无需额外撑开父元素

你当前只有1组堆叠数据,在所有边距、间隙都设为0的前提下,直接给<ResponsiveContainer>设置固定高度为40px即可,barSize设置的40px会直接生效,不会出现压缩情况,不需要父元素额外设置150px高度。


修改后完整代码

const chartData = [
  {
    foo: 8,
    bar: 1,
    baz: 12,
    ext: 1,
    test: 55,
  },
];
// ...

<ResponsiveContainer height={40} width="100%">
  <BarChart 
    layout="vertical" 
    data={chartData} 
    margin={{ top: 0, right: 0, left: 0, bottom: 0 }}
    barGap={0}
    barCategoryGap={0}
  >
    <XAxis 
      type="number" 
      hide 
      domain={[0, 'dataMax']}
      padding={{ left: 0, right: 0 }}
    />
    <YAxis 
      type="category" 
      hide 
      padding={{ top: 0, bottom: 0 }}
    />
    <Bar dataKey="foo" stackId="a" fill="#f4f1de" barSize={40} />
    <Bar dataKey="bar" stackId="a" fill="#e07a5f" barSize={40} />
    <Bar dataKey="baz" stackId="a" fill="#3d405b" barSize={40} />
    <Bar dataKey="ext" stackId="a" fill="#81b29a" barSize={40} />
    <Bar dataKey="test" stackId="a" fill="#f2cc8f" barSize={40} />
  </BarChart>
</ResponsiveContainer>

修改后柱子会完全填满整个容器,没有任何多余空白,高度固定为40px。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:06:03