Rechart 条形图:除了条形图啥都不显示? (全宽和全高?)

Posted

技术标签:

【中文标题】Rechart 条形图:除了条形图啥都不显示? (全宽和全高?)【英文标题】:Rechart Bar Chart: show nothing except the bar? (fullwidth and fullheight?)Rechart 条形图:除了条形图什么都不显示? (全宽和全高?) 【发布时间】:2022-01-04 18:20:36 【问题描述】:

我尝试使用Recharts 创建一个简单的条形堆叠图,但在尝试达到所需的外观和感觉时遇到了一些问题。

基本上,我只需要显示条形图(由不同的条形图组成),没有其他内容(没有图例、轴等,没有边距或填充:条形图必须填满整个图表包装)。

到目前为止我的代码:

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

<ResponsiveContainer  >
  <BarChart layout="vertical" data=chartData margin= top: 0, right: 0, left: 0, bottom: 0 >
    <XAxis type="number" hide />
    <YAxis type="category" hide />
    <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>

我得到的结果是:

我需要删除右侧和底部的白色(灰色)空间。 此外,为了确保条的大小得到尊重(40 像素),我必须将 ResponsiveContainer 的父级设置为 150 像素,否则条会变得非常小(例如 15 像素高)

有什么想法吗?

(ps:我知道这个图表可以用普通的css轻松完成,但我需要使用recharts)

【问题讨论】:

【参考方案1】:

您必须将 rechart 的 ResponsiveContainer 包装在具有所需宽度和高度的容器上。然后您需要指定 XaxisYAxis 域以将其调整到所需的高度和宽度。您还需要将 BarChart 组件的 barCategoryGap 定义为“0%”。

代码块应该如下所示。

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

您不需要 Bar 组件上的 barSize 属性。

这是图表的工作代码示例。

【讨论】:

以上是关于Rechart 条形图:除了条形图啥都不显示? (全宽和全高?)的主要内容,如果未能解决你的问题,请参考以下文章

条形图仅显示一个 x 值的条形图

带有用于正值和负值的单独条形的条形图

arcgis条形图显示数字

java生成饼状图,条形图,折线图的技术可以动态的显示

Matplotlib条形图仅在非零条形图处显示x-ticks

R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战