【发布时间】:2022-08-06 17:15:26
【问题描述】:
我最近阅读了有关能够使用 Flask 和 JS <script> 标签从 Python 绘制 Plotly 图形的信息,并希望使用 React 和 Flask 作为 API 而不是 vanilla JS 来复制它。获取数据很好,但尝试从 Python Plotly 将其绘制成 JSON -> Plotly on React 将永远无法工作 - 它只会返回一个空白的白色显示。
这是 Flask 端 API 的代码(我刚刚使用来自this example 的/plot1 函数对其进行测试;JSON 返回正常):
from flask import Flask
import pandas as pd
import json
import plotly
import plotly.express as px
app = Flask(__name__)
@app.route(\'/chart1\')
def chart1():
df = pd.DataFrame({
\"Fruit\": [\"Apples\", \"Oranges\", \"Bananas\", \"Apples\", \"Oranges\", \"Bananas\"],
\"Amount\": [4, 1, 2, 2, 4, 5],
\"City\": [\"SF\", \"SF\", \"SF\", \"Montreal\", \"Montreal\", \"Montreal\"]
})
fig = px.bar(df, x=\"Fruit\", y=\"Amount\", color=\"City\", barmode=\"group\")
graphJSON = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)
return graphJSON
这是我的App.js:
import React, { useState, useEffect } from \'react\';
import Plotly from \'plotly.js-dist-min\';
import logo from \'./logo.svg\';
import \'./App.css\';
function App() {
const [plot, setPlot] = useState(0);
useEffect(() => {
fetch(\'/plot\').then(res => res.json()).then(data => {setPlot(data);});}, []);
Plotly.newPlot(\"graph-div\", plot, {})
return (
<div className=\"App\">
<header className=\"App-header\">
<img src={logo} className=\"App-logo\" alt=\"logo\" />
<div id=\"graph-div\" className=\"graph-div\">
</div>
</header>
</div>
);
}
接收数据时似乎存在某种问题,但我不确定到底是什么问题 - 我在接收数据时遵循与 React-Flask 教程相同的格式并将其绘制为 Flask -Plotly 的例子。有人可以让我知道如何解决这个问题吗?
标签: reactjs flask plotly-python plotly.js