当前位置:   article > 正文

python数据可视化之flask+echarts(一)

python+flask+echarts可视化将sqlites3中的表布局到web端

这里摘抄一篇通俗易懂的文章,方便大家与后端衔接。。。。。。。

使用python的web框架Flask作为后台,数据存储使用sqllite3,前端的展示用开源图标插件echarts。 

使用sqllite作为数据库存储数据,创建create_db.py,这里是虚拟数据,思路也是参考别人的博客

  1. # coding=utf-8
  2. import sqlite3
  3. import sys
  4. reload(sys)
  5. sys.setdefaultencoding('utf-8')
  6. # 连接
  7. conn = sqlite3.connect('mydb.db')
  8. conn.text_factory = str
  9. c = conn.cursor()
  10. # 创建表
  11. c.execute('''DROP TABLE IF EXISTS weather''')
  12. c.execute('''CREATE TABLE weather (month text, evaporation text, precipitation text)''')
  13. # 数据
  14. # 格式:月份,蒸发量,降水量
  15. purchases = [('1月', 2, 2.6),
  16. ('2月', 4.9, 5.9),
  17. ('3月', 7, 9),
  18. ('4月', 23.2, 26.4),
  19. ('5月', 25.6, 28.7),
  20. ('6月', 76.7, 70.7),
  21. ('7月', 135.6, 175.6),
  22. ('8月', 162.2, 182.2),
  23. ('9月', 32.6, 48.7),
  24. ('10月', 20, 18.8),
  25. ('11月', 6.4, 6),
  26. ('12月', 3.3, 2.3)
  27. ]
  28. # 插入数据
  29. c.executemany('INSERT INTO weather VALUES (?,?,?)', purchases)
  30. # 提交!!!
  31. conn.commit()
  32. # 查询方式一
  33. for row in c.execute('SELECT * FROM weather'):
  34. print(row)
  35. # 查询方式二
  36. c.execute('SELECT * FROM weather')
  37. print(c.fetchall())
  38. # 查询方式二_2
  39. res = c.execute('SELECT * FROM weather')
  40. print(res.fetchall())
  41. # 关闭
  42. conn.close()

 使用python的web框架flask,搭建一个简答的后台系统

app.py

  1. import sqlite3
  2. from flask import Flask, request, render_template, jsonify
  3. import sys
  4. reload(sys)
  5. sys.setdefaultencoding('utf-8')
  6. app = Flask(__name__)
  7. def get_db():
  8. db = sqlite3.connect('mydb.db')
  9. db.row_factory = sqlite3.Row
  10. return db
  11. def query_db(query, args=(), one=False):
  12. db = get_db()
  13. cur = db.execute(query, args)
  14. db.commit()
  15. rv = cur.fetchall()
  16. db.close()
  17. return (rv[0] if rv else None) if one else rv
  18. @app.route("/", methods=["GET"])
  19. def index():
  20. return render_template("index.html")
  21. @app.route("/weather", methods=["GET"])
  22. def weather():
  23. if request.method == "GET":
  24. res = query_db("SELECT * FROM weather")
  25. return jsonify(month=[x[0] for x in res],
  26. evaporation=[x[1] for x in res],
  27. precipitation=[x[2] for x in res])
  28. @app.route('/map')
  29. def map():
  30. return render_template('map.html')
  31. if __name__ == "__main__":
  32. app.run(debug=True)

最后在前端页面展示数据,使用百度开源图表插件echarts

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>ECharts3 Ajax</title>
  6. <script src="{{ url_for('static', filename='jquery-3.2.1.min.js') }}"></script>
  7. <script src="{{ url_for('static', filename='echarts.js') }}"></script>
  8. </head>
  9. <body>
  10. <!--为ECharts准备一个具备大小(宽高)的Dom-->
  11. <div id="main" style="height:500px;border:1px solid #ccc;padding:10px;"></div>
  12. <script type="text/javascript">
  13. var myChart = echarts.init(document.getElementById('main'));
  14. // 显示标题,图例和空的坐标轴
  15. myChart.setOption({
  16. title: {
  17. text: '异步数据加载示例'
  18. },
  19. tooltip: {},
  20. legend: {
  21. data:['蒸发量','降水量']
  22. },
  23. xAxis: {
  24. data: []
  25. },
  26. yAxis: {},
  27. series: [{
  28. name: '蒸发量',
  29. type: 'line',
  30. data: []
  31. },{
  32. name: '降水量',
  33. type: 'bar',
  34. data: []
  35. }]
  36. });
  37. myChart.showLoading(); // 显示加载动画
  38. // 异步加载数据
  39. $.get('/weather').done(function (data) {
  40. myChart.hideLoading(); // 隐藏加载动画
  41. // 填入数据
  42. myChart.setOption({
  43. xAxis: {
  44. data: data.month
  45. },
  46. series: [{
  47. name: '蒸发量', // 根据名字对应到相应的系列
  48. data: data.evaporation.map(parseFloat) // 转化为数字(注意map)
  49. },{
  50. name: '降水量',
  51. data: data.precipitation.map(parseFloat)
  52. }]
  53. });
  54. });
  55. </script>
  56. </body>
  57. </html>

项目结构如下图所示:

最后运行flask项目,python app.py runserver即可,访问127.0.0.1:5000

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/142110
推荐阅读
相关标签
  

闽ICP备14008679号