利用flask框架和Echarts实现电影榜单可视化
时间: 2023-12-02 13:36:30 浏览: 135
首先,需要安装flask和Echarts库。可以使用pip来安装:
```
pip install flask
pip install pyecharts
```
然后,创建一个flask应用,并在其中定义一个路由,用于返回电影榜单数据:
```python
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/movie_rank')
def movie_rank():
data = [
{'name': '流浪地球', 'score': 9.2},
{'name': '战狼2', 'score': 8.9},
{'name': '红海行动', 'score': 8.7},
{'name': '唐人街探案3', 'score': 8.3},
{'name': '复仇者联盟4', 'score': 8.2},
]
return jsonify(data)
```
接下来,使用Echarts库来生成图表。这里使用柱状图来展示电影评分:
```python
from flask import Flask, jsonify
from pyecharts.charts import Bar
from pyecharts import options as opts
app = Flask(__name__)
@app.route('/movie_rank')
def movie_rank():
data = [
{'name': '流浪地球', 'score': 9.2},
{'name': '战狼2', 'score': 8.9},
{'name': '红海行动', 'score': 8.7},
{'name': '唐人街探案3', 'score': 8.3},
{'name': '复仇者联盟4', 'score': 8.2},
]
# 生成柱状图
bar = (
Bar()
.add_xaxis([item['name'] for item in data])
.add_yaxis("电影评分", [item['score'] for item in data])
.set_global_opts(title_opts=opts.TitleOpts(title="电影榜单"))
)
return bar.dump_options_with_quotes()
```
最后,在浏览器中访问路由`/movie_rank`,即可看到电影榜单的柱状图。需要注意的是,Echarts生成的图表是以json格式返回的,因此需要使用`dump_options_with_quotes()`方法将其转换为字符串格式。
完整代码如下:
```python
from flask import Flask, jsonify
from pyecharts.charts import Bar
from pyecharts import options as opts
app = Flask(__name__)
@app.route('/movie_rank')
def movie_rank():
data = [
{'name': '流浪地球', 'score': 9.2},
{'name': '战狼2', 'score': 8.9},
{'name': '红海行动', 'score': 8.7},
{'name': '唐人街探案3', 'score': 8.3},
{'name': '复仇者联盟4', 'score': 8.2},
]
# 生成柱状图
bar = (
Bar()
.add_xaxis([item['name'] for item in data])
.add_yaxis("电影评分", [item['score'] for item in data])
.set_global_opts(title_opts=opts.TitleOpts(title="电影榜单"))
)
return bar.dump_options_with_quotes()
if __name__ == '__main__':
app.run(debug=True)
```
阅读全文
相关推荐













