当前位置:   article > 正文

flask数据用ECharts图表形式展现_flask如何引用echart图标

flask如何引用echart图标

简单写一个,一个flask后台发送数据,一个前端ajax接收数据并用echarts图表展示

test.html

  1. <html>
  2. <head>
  3. <!-- 引入 echarts.js -->
  4. <script type="text/javascript" src="http://echarts.baidu.com/dist/echarts.js"></script>
  5. <!-- 引入jquery.js -->
  6. <script type="text/javascript" src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
  7. </head>
  8. <body>
  9. <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
  10. <div id="main" style="width: 900px;height:500px;"></div>
  11. </body>
  12. <script type="text/javascript">
  13. var a = echarts;
  14. var myChart = a.init(document.getElementById('main'));
  15. // 显示标题,图例和空的坐标轴
  16. myChart.setOption({
  17. title: {
  18. text: '爬虫今日抓取数据图'
  19. },
  20. tooltip : {
  21. trigger: 'axis'
  22. },
  23. legend: {
  24. data:['今日数据']
  25. },
  26. toolbox: {
  27. show : true,
  28. feature : {
  29. mark : {show: true},
  30. dataView : {show: true, readOnly: false},
  31. magicType : {show: true, type: ['line', 'bar']},
  32. // restore : {show: true},
  33. // saveAsImage : {show: true}
  34. }
  35. },
  36. calculable : true,
  37. xAxis : [
  38. {
  39. type : 'category',
  40. boundaryGap : false,
  41. data : []
  42. }
  43. ],
  44. yAxis : [
  45. {
  46. type : 'value',
  47. axisLabel : {
  48. formatter: '{value}'
  49. }
  50. }
  51. ],
  52. series : [
  53. {
  54. name:'最多数量',
  55. type:'line',
  56. data:[],
  57. markPoint : {
  58. data : [
  59. {type : 'max', name: '最大值'},
  60. {type : 'min', name: '最小值'}
  61. ]
  62. },
  63. markLine : {
  64. data : [
  65. {type : 'average', name: '平均值'}
  66. ]
  67. }
  68. },]
  69. });
  70. myChart.showLoading(); //数据加载完之前先显示一段简单的loading动画
  71. var names=[]; //名称数组(实际用来盛放X轴坐标值)
  72. var nums=[]; //数量数组(实际用来盛放Y坐标值)
  73. $.ajax({
  74. type : "get",
  75. // async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
  76. url : "http://127.0.0.1:5000/echarts", //请求发送到Servlet处
  77. // data : {},
  78. dataType : "json", //返回数据形式为json
  79. success : function(result) {
  80. //请求成功时执行该函数内容,result即为服务器返回的json对象
  81. if (result) {
  82. // alert(result["data"]);
  83. for(var i=0;i<result["data"].length;i++){
  84. // alert(result["data"][i]["name"]);
  85. names.push(result["data"][i]["name"]); //挨个取出名称并填入类别数组
  86. }
  87. for(var i=0;i<result["data"].length;i++){
  88. // alert(result["data"][i]["num"]);
  89. nums.push(result["data"][i]["num"]); //挨个取出数量并填入销量数组
  90. }
  91. myChart.hideLoading(); //隐藏加载动画
  92. myChart.setOption({ //加载数据图表
  93. xAxis: {
  94. data: names
  95. },
  96. series: [{
  97. // 根据名字对应到相应的系列
  98. name: '数量',
  99. data: nums
  100. }]
  101. });
  102. }
  103. },
  104. error : function(errorMsg) {
  105. //请求失败时执行该函数
  106. alert("图表请求数据失败!");
  107. myChart.hideLoading();
  108. }
  109. })
  110. </script>
  111. </html>


test.py:

  1. # -*- coding: utf-8 -*-
  2. #__author__="ZJL"
  3. from flask import Flask
  4. from flask import request
  5. from flask import Response
  6. import json
  7. app = Flask(__name__)
  8. def Response_headers(content):
  9. resp = Response(content)
  10. resp.headers['Access-Control-Allow-Origin'] = '*'
  11. return resp
  12. @app.route('/')
  13. def hello_world():
  14. return Response_headers('hello world')
  15. @app.route('/echarts')
  16. def echarts():
  17. datas = {
  18. "data":[
  19. {"name":"allpe","num":100},
  20. {"name":"peach","num":123},
  21. {"name":"Pear","num":234},
  22. {"name":"avocado","num":20},
  23. {"name":"cantaloupe","num":1},
  24. {"name":"Banana","num":77},
  25. {"name":"Grape","num":43},
  26. {"name":"apricot","num":0}
  27. ]
  28. }
  29. content = json.dumps(datas)
  30. resp = Response_headers(content)
  31. return resp
  32. @app.errorhandler(403)
  33. def page_not_found(error):
  34. content = json.dumps({"error_code": "403"})
  35. resp = Response_headers(content)
  36. return resp
  37. @app.errorhandler(404)
  38. def page_not_found(error):
  39. content = json.dumps({"error_code": "404"})
  40. resp = Response_headers(content)
  41. return resp
  42. @app.errorhandler(400)
  43. def page_not_found(error):
  44. content = json.dumps({"error_code": "400"})
  45. resp = Response_headers(content)
  46. return resp
  47. @app.errorhandler(410)
  48. def page_not_found(error):
  49. content = json.dumps({"error_code": "410"})
  50. resp = Response_headers(content)
  51. return resp
  52. @app.errorhandler(500)
  53. def page_not_found(error):
  54. content = json.dumps({"error_code": "500"})
  55. resp = Response_headers(content)
  56. return resp
  57. if __name__ == '__main__':
  58. app.run(debug=True)#threaded=True,







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

闽ICP备14008679号