Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。它被称为微框架,微框架中的“微”是指Flask旨在保持代码简洁且易于扩展,Flask框架的主要特征是核心构成比较简单,但具有很强的扩展性和兼容性,程序员可以使用Python语言快速实现一个网站或Web服务。
一般情况下,它不会指定数据库和模板引擎等对象,用户可以根据需要自己选择各种数据库。
这里我将数据都存储在MySQL中,所以使用flask框架时需要对MySQL数据库进行连接,读取数据后,将数据传入echarts中,进行web页面的展示。前提是在虚拟机中部署好python3的环境以及flask框架,添加好各种包以及可视化需要的js文件等。
Windows下安装flask
升级pip
flask框架的文件分布如下,web_see为整体框架目录,其下有static、templates两个包,分别存储不同类型的文件,static、templates的同级存放py文件为导入数据的代码。
static文件夹
echarts.min.js文件可以在echarts官网进行下载
templates文件夹
这里绘制的是折线图
引用MySQL的数据需要使用{{ }}引起来
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>电商服装类数据市场分析——折线图</title>
<script src="/static/echarts.min.js"></script> //必须引用,或者不下载到本地,直接使用链接
<style>
#main{
width: 600px;
height: 400px;
}
</style>
</head>
<body>
<div id="main"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化 echarts 实例并绘制图表。
var myChart=echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: '时间-交易价格'
},
dataZoom: [{
type: 'slider',
show: true, //flase直接隐藏图形
xAxisIndex: [0],
left: '9%', //滚动条靠左侧的百分比
bottom: -5,
start: 10,//滚动条的起始位置
end: 20 //滚动条的截止位置(按比例分割你的柱状图x轴长度)
}],
xAxis: {
name:"时间",
type: 'category',
data:[
{% for i in femaletime %}
"{{ i[0] }}",
{% endfor %}
]},
yAxis: {
name:"售价",
type: 'value',
axisLabel : {
formatter: '{value} 元'}
},
series: [
{
type: 'line', //line折线图。bar柱形图
data:[{% for j in female_num %}
"{{ j }}",
{% endfor %}],
itemStyle:{normal: {color:"#FF6A6A"}}
},
{
type: 'line', //line折线图。bar柱形图
data:[{% for k in male_num %}
"{{ k }}",
{% endfor %}],
itemStyle:{normal: {color:"#31b0d5"}}
},
]
};
myChart.setOption(option);// 基于准备好的dom,初始化 echarts 实例并绘制图表。
</script>
</body>
</html>
line.py
这里绘制的是折线图
from flask import Flask, render_template, url_for
import pymysql
import re
# 生成Flask实例
app = Flask(__name__)
@app.route("/")
def my_echart():
# 连接数据库,***的位置需要根据自己的数据库信息进行填写
conn = pymysql.connect('192.168.159.135', user='root', password='Root123!', db='clothing')
cur = conn.cursor()
sqlfemale = ' SELECT * FROM clothes' # 女
sqlmale = ' SELECT * FROM clothes2 ' # 男
cur.execute(sqlfemale)
femaleresult = cur.fetchall()
cur.execute(sqlmale)
maleresult = cur.fetchall()
pattern = re.compile(r'\d+:\d+', re.S)
femaletime = []
female_num = []
for m in range(len(femaleresult)):
female_num.append(femaleresult[m][3])
a = re.findall(pattern, femaleresult[m][2])
femaletime.append(a)
femaletime.sort() # 对时间进行排序
# maletime = []
male_num = []
for n in range(len(maleresult)):
male_num.append(maleresult[n][3])
# a = re.findall(pattern, maleresult[n][2])
# maletime.append(a)
cur.close()
conn.close()
# 在浏览器上渲染people_flow.html(为了查看输出的数据)
return render_template('linepic.html',femaletime=femaletime,female_num=female_num,male_num=male_num)
if __name__ == '__main__':
app.run(debug=True)