转换 Python datetime.timedelta 对象以便 Recharts 读取

Converting Python datetime.timedelta object in order to be read by Recharts

我正在尝试在 Recharts(使用 React)和 Flask(使用 Formula1 API)中绘制基本图。我在 Flask 中获得的数据最初是一个 datetime.timedelta 对象,我无法将其发送到 React。要发送数据,它需要 JSON 可序列化,所以我尝试将其转换为:

但我不确定如何在 React 中解压这些。

这是我尝试过的 2 种数据格式。

>>> data_str = [{
     "LapNumber": '0',
     "44": "0 days 00:01:27.440000",
     "6": "0 days 00:01:27.313000"},
    {"name": '1',
     "44": "0 days 00:01:28.982000",
     "6":  "0 days 00:01:27.504000"
     }]
>>> data_int = [{
         "LapNumber": '0',
         "44": 87440000000,
         "6": 87313000000},
        {"LapNumber": '1',
         "44": 88982000000,
         "6":  87504000000
         }]

app.py

@app.route('/api/lap_number_time')
def getChartData():
    # data = list of dictionaries in one of the formats shown above
    return jsonify(data)

App.js

useEffect(() => {
        fetch("http://127.0.0.1:5000/api/lap_number_time")
            .then((res) => res.json())
            .then((data) => {
                console.log("first chart data is", data)
                setCurrentChartData(data)
            })
    }, [])

...
<LineChart width={400} height={400} data={currentChartData}>
    <Line type="monotone" dataKey="14" stroke="#8884d8" />
    <Line type="monotone" dataKey="ham" stroke="#82ca9d" />
    <Line type="monotone" dataKey="6" stroke="#1a5d57" />
    <XAxis dataKey="LapNumber"/>
    <YAxis />
    <Legend />
</LineChart>

我的问题是:

  1. 我可以将 timedelta 对象传输到 Recharts 并在那里绘制它吗(因为每个数据点的整数转换需要很长时间)?
  2. 如果不是,我让 Recharts 在整数格式时成功绘制。但是,我需要帮助在 Recharts 中以 [%min:%sec:%millisec] 格式显示它。

我在这里建议您使用这些方法中的任何一种 并将日期时间转换为 unix 时间戳并将其发送给 React。

然后通过Dennis Sandmark

看看这个方法

https://github.com/recharts/recharts/issues/956#issuecomment-339279600