用数组反应 Recharts 数据

React Recharts data with array

我有一个具有以下结构的数据数组:

0:
  date: '01-12-2020',
  data: Array(2)
    {name: "plants", count: 5}
    {name: "water", count: 2}
1:
  date: '02-12-2020',
  data: Array(2)
    {name: "plants", count: 1}
    {name: "water", count: 4}
...

我想在 x 轴上显示日期并为每个“名称”类别绘制一行。在这种情况下,两条线,一根用于植物,一根用于水。

我应该格式化这段代码还是直接在 recharts 中使用这个数组?我在后端自己创建数组,所以我也可以在那里格式化它。

我试过类似的方法,但没有用:

<ResponsiveContainer width="100%" height={200}>
                <LineChart data={data}>
                    <CartesianGrid strokeDasharray="3 3" />
                    <XAxis dataKey="x" />

                    <YAxis />
                    <Tooltip />
                    {data.map((item, i) => (
                        <Line
                            dataKey={data[0].data[0].count}
                            type="monotone"
                            stroke={colors[0]}
                            activeDot={{ r: 8 }}
                        />
                    ))}
                </LineChart>
            </ResponsiveContainer>

您的数据需要格式化为:

[{名称: '01-12-2020', 植物:5 水:4}]

您可以按照以下方式进行操作:

   let result = [];
   data.map(entry) => {
   let obj = {date: entry.date}
     entry.data.map((entry1) => {
      obj[entry1.name] = entry1.count;
    });
   result.push(obj)
  })

你的图表如下(你在 XAxis 上的 dataKey 是假的)

<ChartContainer>
  <ResponsiveContainer>
    <LineChart
      width={500}
      height={300}
      style={{ color: scoopBlue }}
      data={data}
      margin={{
        top: 5,
        right: 30,
        left: 20,
        bottom: 5
      }}
    >
      <CartesianGrid strokeDasharray="3 3" />
      <Legend />
      <Line
        type="monotone"
        dataKey="plants"
        stroke={scoopBlue}
        strokeWidth={2}
        activeDot={{ r: 5 }}
      />
        <Line
        type="monotone"
        dataKey="water"
        stroke={"orange"}
        strokeWidth={2}
        activeDot={{ r: 5 }}
       />
     </LineChart>
   </ResponsiveContainer>
</ChartContainer>