gpt4 book ai didi

python - 尝试使用 Flask 和 python 在 html 上显示图像,每次刷新都会改变

转载 作者:太空宇宙 更新时间:2023-11-03 20:10:42 24 4
gpt4 key购买 nike

我正在为大学做一个项目,我从 Twitter 获取数据并创建一些图表,然后用 Flask 在 html 上显示。这些图表是用 matplot 创建的,然后我将它们保存为 .png 图像。每次用户刷新网页时,数据也会更新其架子,因此会再次生成图表。我的问题是,显示图像的唯一方法是创建静态文件夹,这样当本地镜像更新时,图像就不会更新。我想知道如何在刷新页面时使图像发生变化。

这是我的 flask 应用程序

app = Flask(__name__)

labels = ["Postive", "Negative", "Neutral"]
colors = ["#00ff7f", "#d80000", "#00008B"]


@app.route("/pie")
def chart():
negative, positive, neutral = get_data("China")
values = [positive, negative, neutral]
pie_labels = labels
pie_values = values
return render_template('pie_chart.html', image="static/images/locations.png",title='Positive and Negative', max=1700, set=zip(values, labels, colors))

if __name__ == "__main__":
app.run()

这是 HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>{{ title }}</title>
<script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js'></script>
</head>

<body>
<h1>{{ title }}</h1>

<canvas id="chart" width="600" height="400"></canvas>
<script>
var pieData = [
{% for item, label, colors in set %}
{
value: {{item}},
label: "{{label}}",
color : "{{colors}}"
},
{% endfor %}
];
// get bar chart canvas
var mychart = document.getElementById("chart").getContext("2d");
steps = 10
max = {{ max }}
// draw pie chart
new Chart(document.getElementById("chart").getContext("2d")).Pie(pieData);
</script>
<img src="{{ image }}">
</body>
</html>

正如我所说,这里的问题是如何在网页中显示图像并在每次数据更新(刷新)时更新它。

最佳答案

您需要另一条路线来使用 Flask send_file 返回动态图像方法。然后,您可以在现有路由返回的 HTML 中链接到该路由。

示例:

@app.route("/images/pie")
def chart_image():
# Get data, but only make chart image
image_object = some_thing_to_make_image_data_for_a_country()
return flask.send_file(image_object, mimetype="image/png")

@app.route("/pie")
def chart_data():
# Get data, but only get values
negative, positive, neutral = get_data(country)
values = [positive, negative, neutral]
pie_labels = labels
pie_values = values
return render_template('pie_chart.html', image="images/pie",title='Positive and Negative', max=1700, set=zip(values, labels, colors))

这将获取数据两次,除非您在一个路由中缓存 app 中的数据,并在另一个路由中使用缓存的数据。

关于python - 尝试使用 Flask 和 python 在 html 上显示图像,每次刷新都会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58735613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com