我试图使用recharts来实现一个条形图.但width={600}
和height={300}
导致条形图是绝对的,没有响应.如何使条形图响应之一?我试图使用百分比作为width={'50%"} height={"40%"}
,但没有工作.
import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts';
<BarChart className="barChart" width={600} height={300} data={data}
margin={{top: 5, right: 30, left: 20, bottom: 5}} label="heaf">
<CartesianGrid strokeDasharray="3 3"/>
<XAxis dataKey="name"/>
<YAxis/>
<Tooltip/>
<Legend />
<Bar dataKey="occupied" barSize={10} fill="#05386b" />
<Bar dataKey="available" barSize={10} fill="#fdaa00" />
<Bar dataKey="cleaning" barSize={10} fill="#379583" />
<Bar dataKey="reserved" barSize={10} fill="#c60505" />
</BarChart>
字符串
8条答案
按热度按时间vom3gejh1#
您需要使用
ResponsiveContainer
才能使其工作。此外,使用不带**括号的百分比值。字符串
我用过了,效果很好!:)
来源:Responsive Container Docs
7vux5j2d2#
您可以使用
recharts
提供的ResponsiveContainer
。ResponsiveContainer
的Docs说:一个容器组件,使图表适应父容器的大小。其中一个 prop 宽度和高度应该是百分比字符串。
下面是工作代码https://codesandbox.io/s/react-recharts-responsive-stack-overflow-863bi。尝试调整输出窗口宽度:
字符串
以下是
container
的css:型
ruarlubt3#
如果希望两个维度都缩放,只需使用
aspect
属性即可字符串
在这种情况下,高度/宽度将是父容器的100%。
rwqw0loc4#
用div将条形图换行。
字符串
对于外部div:宽度的50%是相对于容器宽度。paddingTop是容器宽度的40%。
对于inner div:height为100%,将占据其整个容器,其高度仅为其paddingTop。
33qvvth15#
这对我很有效
字符串
data.length -> y轴上的组件数
x ->要增加的单元格大小(在我的情况下,33工作得很好)
t0ybt7op6#
我不想要求特定的长宽比,也不想要求固定其中一个维度,所以我决定通过使用
use-react
的useMeasure
钩子查询父容器的大小和宽度来动态设置图表的高度和宽度。字符串
我希望我的图表总是填充这个div,它可以通过窗口以任何方式调整大小。
kcrjzv8t7#
给予minWidth和height给ResponsiveContainer Wrapper。* 就这么简单 *
字符串
u59ebvdq8#
在Tailwind CSS中使用断点
如果您使用Tailwind CSS,另一种选择是将图表 Package 在
ResponsiveContainer
组件中,保持height
和width
属性未设置,并将各种断点传递给className
属性。使用媒体断点的好处是它可以让你根据屏幕大小指定不同的最小高度(或宽度)。
rechart
提供的ResponsiveContainer
在一个方向上的响应性很好,但是在大屏幕上350px的固定高度最终会拉伸图表。对于那些还没有使用Tailwind CSS的人,这里有关于使用响应断点的文档和关于sizing utility classes的更多信息。
示例组件
下面的例子强调了如何将顺风风格的媒体断点传递给
ResponsiveContainer.className
属性,这将允许您根据屏幕大小调整图表的大小。字符串
示例用法
下面是一个如何在各种大小的容器中使用此图表组件的示例:
型
输出示例
由此产生的“ Jmeter 板”在桌面上应该看起来像这样:
的数据
在移动的上是这样的:
的