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

Recharts雷达图报错:<line>属性x1值为NaN的问题排查

React中Recharts雷达图报错:Invalid value for attribute x1="NaN"

数据结构

[
  {N_DNA: 2, T_DNA: 1, T_RNA: 3, subject: "A1"},
  {N_DNA: 1, T_DNA: 3, T_RNA: 2, subject: "A2"},
  {N_DNA: 4, T_DNA: 4, T_RNA: 1, subject: "B1"},
  {N_DNA: 6, T_DNA: 8, T_RNA: 7, subject: "B2"}
]

实现代码

<ResponsiveContainer width={"95%"} height={"100%"}>
  <RadarChart
      cx={300}
      cy={250}
      outerRadius={150}
      width={500}
      height={500}
      data={data}
  >
      <PolarGrid />
      <PolarAngleAxis dataKey="subject" />
      <PolarRadiusAxis />
      <Radar
          name="Mike"
          dataKey="N_DNA"
          stroke="red"
          fill="none"
          fillOpacity={0.3}
      />
      <Radar
          name="Jake"
          dataKey="T_DNA"
          stroke="blue"
          fill="none"
          fillOpacity={0.3}
      />
      <Radar
          name="Jake"
          dataKey="T_RNA"
          stroke="green"
          fill="none"
          fillOpacity={0.3}
      />
  </RadarChart>
</ResponsiveContainer>

问题描述

上述代码在CodeSandbox中运行正常,但在本地浏览器中抛出错误:Error: Invalid value for <line> attribute x1="NaN"

解决方法

  1. 移除RadarChart的width和height属性
    ResponsiveContainer已负责自适应尺寸,同时设置RadarChart的固定宽高会导致尺寸计算冲突,引发NaN错误。修改后代码:
<RadarChart
    cx={300}
    cy={250}
    outerRadius={150}
    data={data}
>
  1. 确保ResponsiveContainer父容器有明确高度
    若父容器使用height: 100%,需保证所有上层容器(直至body)都设置了高度,否则ResponsiveContainer无法正确计算尺寸。可给父容器设置固定高度(如height: 500px),或通过CSS确保高度继承。

  2. 处理异步数据加载
    如果data是异步获取的,初始渲染时可能为空或未定义,导致图表计算出错。可在渲染前判断数据是否存在:

{data?.length > 0 && (
  <ResponsiveContainer width={"95%"} height={"100%"}>
    {/* 雷达图组件 */}
  </ResponsiveContainer>
)}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:40:31