# Flask 和使用 Chart.js 的美观的图表
> 原文: [https://pythonspot.com/flask-and-great-looking-charts-using-chart-js/](https://pythonspot.com/flask-and-great-looking-charts-using-chart-js/)
![Flask piechart](img/42212723a1a77a8a66fecd11fd3d5165.jpg)
带有饼图的 Flask webapp
在本文中,您将学习如何使用 [Chart.js](http://www.chartjs.org) 和 [Flask](/ python-flask-tutorials)。
Chart.js 是一个 JavaScript 库,用于创建简单干净的图表。它们都是基于 HTML5 的,响应式的,模块化的,交互式的,共有 6 个图表。
```py
Chart.js
Flask Chart.js
```
创建目录`/static/`并将文件[`Chart.min.js`](https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js)添加到其中。您可以从 Chart.js 网站获得它,也可以使用链接。 最后进入主目录并使用以下内容创建`app.py`:
```py
from flask import Flask
from flask import Markup
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route("/")
def chart():
labels = ["January","February","March","April","May","June","July","August"]
values = [10,9,8,7,6,4,7,8]
return render_template('chart.html', values=values, labels=labels)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5001)
```
最后运行:
```py
python app.py
```
打开 [http://127.0.0.1:5001/](http://127.0.0.1:5001/),您会看到数组`values[]`与数据中的`labels[]`一起绘制。
我们只需将这两个数组传递给`render_template()`即可。这意味着大多数魔术都发生在模板中。 Chart.js 是一个客户端 javascript 库,因此我们的`app.py`非常少。
结果:
![Flask barchart](img/be653e10825576897782b24bebe362dd.jpg)
Flask 条形图
### 使用 Chart.js 和 Flask 创建折线图
要创建折线图,我们只需修改`chart.html`模板即可。 更改为:
```py
Chart.js
Flask Chart.js
```
输出:
[<picture><source srcset="/wp-content/uploads/2015/07/linechart.png.webp" type="image/webp"> <source srcset="/wp-content/uploads/2015/07/linechart.png" type="image/jpeg"> ![Flask line-chart](img/d307bb30c80bcdc37eb773b73a87a095.jpg) </picture>](/wp-content/uploads/2015/07/linechart.png) 烧瓶线形图
### 创建饼图
要创建饼图,我们必须稍加修改应用程序代码。 我们需要 3 个数组:值,标签和颜色。 与 HTML 一样,颜色以十六进制定义。 要在一个循环中对其进行迭代,请压缩它们。
```py
from flask import Flask
from flask import Markup
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route("/")
def chart():
labels = ["January","February","March","April","May","June","July","August"]
values = [10,9,8,7,6,4,7,8]
colors = [ "#F7464A", "#46BFBD", "#FDB45C", "#FEDCBA","#ABCDEF", "#DDDDDD", "#ABCABC" ]
return render_template('chart.html', set=zip(values, labels, colors))
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5001)
```
其次,我们将模板修改为:
```py
Chart.js
Flask Chart.js
```
结果:
![Flask piechart](img/54280984e9f8f3b22316893807c1a52e.jpg)
Flask 饼图
[下载 Flask 示例](https://pythonspot.com/download-flask-examples/)