提问人:xQsme 提问时间:1/10/2023 最后编辑:xQsme 更新时间:1/11/2023 访问量:82
React Recharts,chromium 和 firefox 之间的区别
React Recharts, difference between chromium and firefox
问:
我有一个带有时间序列的堆积面积图。我正在对数据进行归一化,使其总和始终为 100%。
对于某些特定数据,图表会中断,并且曾经在 firefox 中以相同的方式中断,直到我添加了 .
现在这就是我所拥有的:scale="time"
XAxis
<AreaChart data={percentData.sort((a, b) => a.name >= b.name)}>
<defs>
{colors.map((c, i) => (
<linearGradient id={`graphColor${i}`} x1="0" y1="0" x2="0" y2="1" key={c}>
<stop offset="5%" stopColor={c} stopOpacity={1} />
<stop offset="95%" stopColor={c} stopOpacity={0.5} />
</linearGradient>
))}
{customGradients()}
</defs>
<XAxis
dataKey="name"
type="number"
domain={[MIN, MAX]}
scale="time"
tickFormatter={dateFormatter}
ticks={tickArray}
tickCount={5}
>
<Label value="Date" position="bottom" style={{ textAnchor: 'middle' }} />
</XAxis>
<YAxis ticks={[0, 25, 50, 75, 100]} domain={[0, 100]} unit="%" type="number">
<Label angle={-90} value="Percentage" position="insideLeft" style={{ textAnchor: 'middle' }} />
</YAxis>
<Tooltip content={<CustomTooltip tickFormatter={dateFormatter} />} />
<CartesianGrid strokeDasharray="3 3" />
{tab
&& tab.keys
.sort()
.map((k, i) => (
<Area
type="monotone"
dataKey={k}
stroke={tab.data[`${k}color`] || getColorForCurrentIndex(i)}
fillOpacity={1}
fill={
tab.data[`${k}color`]
? `url(#graphColor${k}color)`
: `url(#graphColor${getColorIndex(i)})`
}
key={k}
stackId="1"
/>
))}
</AreaChart>
chromium 中的控制台输出以下内容:
Error: <rect> attribute x: Expected length, "NaN".
Error: <rect> attribute width: Expected length, "NaN".
我使用 unix 时间戳作为 x 坐标,它们是正确的数字实例。
这是firefox的结果:Firefox堆叠时间序列面积图
Chromium 上的第一个渲染:Chromium 堆叠时间序列面积图的第一个渲染
在 Chromium 上重新渲染后:Chromium 堆叠时间序列面积图第二次渲染
任何帮助都是值得赞赏的,正在努力解决这个问题。谢谢!
我已经尝试了 recharts 文档中提供的百分比面积图示例,结果相同。
答:
0赞
xQsme
1/11/2023
#1
事实证明,我没有正确排序我的数据,即使它们是传递到数字轴的数字,对数据数组进行排序也解决了这个问题:
sort((a, b) => a.name >= b.name)
=> sort((a, b) => a.name - b.name)
评论