前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于flask入门教程-ajax+echarts实现大屏展示

关于flask入门教程-ajax+echarts实现大屏展示

作者头像
python与大数据分析
发布2022-04-02 14:44:30
1.1K0
发布2022-04-02 14:44:30
举报

陆陆续续写了一个系列的flask入门教程了,最后以一个半成品大屏做个了结,也算是一段时间的成果吧,毕竟不是专业码农,只是爱好而已,还有很多其他的事情等待探索。

大屏用到的技术主要包括标准的HTML、CSS、Javascript,再往细分包括了jquery、bootstrap、flex,ajax,echarts,加上之前的flask,json。至于大屏展示这块,本人实在谈不上什么审美可研,总之要有主次,表达要有体系,不能为了动画而动画,为了呈现而呈现。

下面是一系列关于flask入门教程的列表。

1

关于flask入门教程-ajax+echarts实现关系图

2

关于flask入门教程-ajax+百度地图实现热力图

3

关于flask入门教程-ajax+echarts实现地图热力图

4

关于flask入门教程-ajax+echarts实现地图散点图

5

关于flask入门教程-ajax+echarts实现地图GDP展示

6

关于flask入门教程-ajax+echarts实现热力图

7

关于flask入门教程-ajax+echarts实现矩形树图

8

关于flask入门教程-ajax+echarts实现河流图

9

关于flask入门教程-ajax+echarts实现数量未知的折线图

10

关于flask入门教程-ajax+echarts简单实现一

11

关于flask入门教程-记录集转jsonify

12

关于flask入门教程-bootstrap-fileinput实现文件上传

13

关于flask入门教程-前端代码

14

关于flask入门教程-app代码

15

关于flask入门教程-整体框架

16

关于flask入门教程-关于日期控件DateTimePicker

17

关于flask入门教程-通过ajax删除数据

18

关于flask入门教程-自定义弹出框

19

关于flask入门教程-自定义弹出框

20

关于flask入门教程-分页的几种方式

21

关于flask入门教程-图书借阅系统-分页显示数据

22

关于flask入门教程-图书借阅系统-flask_SQLAlchemy高级用法

23

关于flask入门教程-图书借阅系统-原型设计

24

关于flask入门教程-图书借阅系统-数据库设计和ORM映射

25

关于flask入门教程-图书借阅系统-一

这是一个大屏的框架

为了便于调试,所有的css、javascript、html代码都写在一起了。

代码语言:javascript
复制
<html>
<head>
<meta chartset="utf-8">
<title>可视化echartcontainers图表</title>
<link href="../static/css/bootstrap.min.css" rel="stylesheet">
<script src="../static/js/jquery.js"></script>
<script src="../static/js/bootstrap.min.js"></script>
<script src="../static/js/echarts.min.js"></script>
<script src="static/js/bmap.js" type="text/javascript" charset="utf-8"></script>
<script src="static/js/china.js" type="text/javascript" charset="utf-8"></script>
<style>
.contains{height:100%;width:100%;background:url('static/images/bg.png');background-repeat:no-repeat;background-position:center;}
.header{height:80px;width:100%;background-size: cover;}
.header .title{display:flex;justify-content:center;color:#fff;font-weight:bold;font-size:2.8rem;align-items: center;height: 100%;}
.time{margin-right: 10px;font-size: 1.8rem;margin-top: -4rem;color: #fff;float: right;}
.time .label{font-weight:300}
.container{height:calc(100vh - 120px);width:100%;}
.toolbar{height:40px;width:100%;background-size: cover;background-position:center;bottom: 0;position: fixed;}
.toolbar .title{display:flex;justify-content:center;color:#fff;font-weight:bold;font-size:1.8rem;align-items: center;height: 100%;}

.item_left,.item_center,.item_right{height:100%; padding-right: 10px;padding-left: 10px;display: flex;}
.left,.middle,.right{display: flex;flex-direction: column;align-content: stretch;justify-content: stretch;width: 100%;}

.echartcontainer{flex:1;margin: 10px 0px;}
.infodiv{flex: 2;margin: 10px 0px;}
.mapdiv{flex:4;margin: 10px 0px;}

.item {margin-top: 0.85rem;}

.KPI {width: 100%;height: 100%;position: relative; margin: auto;}
.KPI ul{ margin-left:-.5rem;margin-right:-.5rem;  padding: .16rem 0;}
.KPI li{ float: left; width: 33.33%; text-align: center; position: relative}
.KPI li:before{ position:relative; content: ""; height:30%; width: 1px; background: rgba(255,255,255,.1); right: 0; top: 15%;}
.KPI li:last-child:before{ width: 0;}
.KPI li h2{ font-size:2rem; color: #c5ccff;font-family:"SimHei";}
.KPI li span{ font-size:1.2rem; color: #fff; opacity: .5;font-family:"Microsoft YaHei";}

.border .chart_title{position:relative;height:35px;margin:5px 0;}
.border .chart_title span{color:#fff;font-size:18px;line-height:35px;}
.border .pie-chart{height:calc(100% - 50px);}
.border .radar-chart{height:calc(100% - 50px);}
.border .stack-chart{height:calc(100% - 50px);}
.border .histogram-chart{height:calc(100% - 50px);}
.border .rose-chart{height:calc(100% - 50px);}
.border .gdpmap{height:calc(100% - 35px);}
.border .board-chart{height:100%;}

.border{
    border: 2px solid #02a6b5;
    width: 100%;
    height: 100%;
    position: relative;
    margin: auto;
}
.border:before{
    content: '';
    position: absolute;
    width: 88%;
    bottom: -2px;
    top: -2px;
    left: 6%;
    border-bottom: 2px solid #0b3146;
    border-top: 2px solid #0b3146;
}
.border:after{
    content: '';
    position: absolute;
    height: 76%;
    left: -2px;
    right: -2px;
    top: 12%;
    border-left: 2px solid #0b3146;
    border-right: 2px solid #0b3146;
}
</style>
</head>
<body class="contains">
   <div class="header">
      <div class = "title" >数据可视化大屏</div>
      <div class = "time" >当前时间:<label>2020-05-27 08:36:58</label></div>
   </div>
   <div class="container">
      <div class="row">
         <div class="col-md-3 item_left">
            <div class="left">
               <div class="echartcontainer">
                  <div class="border">                  
                     <div class="KPI">
                         <ul >
                             <li><h2>1824</h2><span>本月问题数量</span></li>
                             <li><h2>1920</h2><span>上月问题数量</span></li>
                             <li><h2>5%</h2><span>环比增长</span></li>
                         </ul>
                         <div style="border-bottom: 1px solid rgba(255,255,255,.1)"></div>
                         <ul>
                             <li><h2>824</h2><span>本月治理数量</span></li>
                             <li><h2>710</h2><span>上月治理数量</span></li>
                             <li><h2>14%</h2><span>环比增长</span></li>
                         </ul>
                     </div>                   
                  </div>
               </div>
               <div class="echartcontainer" >
                  <div class="border">
                     <div class="chart_title">
                        <span>饼状图</span>
                     </div>
                     <div class="pie-chart" id="pie-chart"></div>
                  </div>
               </div>
               <div class="echartcontainer">
                  <div class="border">
                     <div class="chart_title">
                        <span>雷达图</span>
                     </div>                
                     <div class="radar-chart" id="radar-chart"></div>
                  </div>
               </div>
            </div>
         </div>
         <div class="col-md-6 item_center">
            <div class="middle">
               <div class="infodiv">
                  <div class="border">
                     <div class="board-chart" id="board-chart"></div>   
                  </div>          
               </div>
               <div class="mapdiv">
                  <div class="border">
                     <div class="chart_title">
                        <span>地图热力图</span>
                     </div>                
                     <div class="gdpmap" id="gdpmap"></div>                
                  </div>       
               </div>
            </div>
         </div>
         <div class="col-md-3 item_right">
            <div class="right">
               <div class="echartcontainer">
                  <div class="border">
                     <div class="chart_title">
                        <span>堆积图</span>
                     </div>                
                     <div class="stack-chart" id="stack-chart"></div>                        
                  </div>
               </div>
               <div class="echartcontainer">
                  <div class="border">
                     <div class="chart_title">
                        <span>柱状图</span>
                     </div>                
                     <div class="histogram-chart" id="histogram-chart"></div>                        
                  </div>
               </div>
               <div class="echartcontainer">
                  <div class="border">
                     <div class="chart_title">
                        <span>旭日图</span>
                     </div>                
                     <div class="rose-chart" id="rose-chart"></div>                      
                  </div>
               </div>
            </div>
         </div>
      </div>
   </div>
   <div class="toolbar">
      <div class = "title" >数据可视化状态栏    ©1999-2022不胜人生一场醉</div>
   </div> 
   
<script type="text/javascript">
$(function(){
   pieChar();
   mapChar();
   radarChar();
   stackChar();
   boardChar();
   histogramChar();
   roseChar();
});
window.onresize = function(){
       pieChart.resize();
       mapChart.resize();
       radarChart.resize();
       stackChart.resize();
       boardChart.resize();
       histogramChart.resize();
       roseChart.resize();
}

//饼状图
var pieChart="";
function pieChar(){    
   pieChart= echarts.init(document.getElementById("pie-chart"));
   option = {}
   pieChart.setOption(option);
}

</script>  
   
</body>
</html>

下面是加了echarts之后 的效果图,只是为了效果而效果,满足自己的愿望而已。

下面是具体的两个echarts的js代码,来自echarts官网

代码语言:javascript
复制
//饼状图
var pieChart="";
function pieChar(){    
   pieChart= echarts.init(document.getElementById("pie-chart"));
   option = {
          color:["#4f8bf9","#fea31e","#959595"],
          tooltip: {
              trigger: 'item',
              formatter: "{a} <br/>{b}: {c} ({d}%)"
          },
      grid: {
               x:'10%',
               y:'10%',
               x2:'10%',
               y2:'10%',
               containLabel: true
             },     
          series: [ {
                  name:'访问来源',
                  type:'pie',
                  selectedMode: 'single',
                  radius: [0, '60%'],
         center:["50%","42%"],
                  label: {
                      normal: {
                             position: 'outside',
                             formatter: "{b}:{d}%"    
                      }
         }, 
         data:[
            {value:556, name:'正常'},
            {value:100, name:'告警',selected:true},
                 {value:30, name:'离线'}
                     ]
           }]
   };
   pieChart.setOption(option);
}

var mapChart="";
function mapChar(){    
      mapChart = echarts.init(document.getElementById('gdpmap'));
      option = {
       title: {
           text: '中国GDP地图',
           subtext: 'data from china.js',
           sublink: '测试',
           left: 'center'
       },
     grid: {
            x:'10%',
            y:'10%',
            x2:'10%',
            y2:'10%',
            containLabel: true
          },          
       geo:{
          map:'china'
       },
       tooltip : {
           trigger: 'item'
       },  
   };
       // 使用刚指定的配置项和数据显示图表。
       mapChart.setOption(option);
      // 使用刚指定的配置项和数据显示图表。
   
   mapChart.hideLoading();
   result=[{'name': '北京', 'value': 14113.6}, {'name': '天津', 'value': 9224.46}, {'name': '河北', 'value': 20394.26}, {'name': '山西', 'value': 9200.86}, {'name': '内蒙古', 'value': 11672.0}, {'name': '辽宁', 'value': 18457.3}, {'name': '吉林', 'value': 8667.58}, {'name': '黑龙江', 'value': 10368.6}, {'name': '上海', 'value': 17165.98}, {'name': '江苏', 'value': 41425.48}, {'name': '浙江', 'value': 27722.31}, {'name': '安徽', 'value': 12359.33}, {'name': '福建', 'value': 14737.12}, {'name': '江西', 'value': 9451.26}, {'name': '山东', 'value': 39169.92}, {'name': '河南', 'value': 23092.36}, {'name': '湖北', 'value': 15967.61}, {'name': '湖南', 'value': 16037.96}, {'name': '广东', 'value': 46013.06}, {'name': '广西', 'value': 9569.8539}, {'name': '海南', 'value': 2064.5}, {'name': '重庆', 'value': 7925.58}, {'name': '四川', 'value': 17185.48}, {'name': '贵州', 'value': 4602.16}, {'name': '云南', 'value': 7224.18}, {'name': '西藏', 'value': 507.46}, {'name': '陕西', 'value': 10123.48}, {'name': '甘肃', 'value': 4120.75}, {'name': '青海', 'value': 1350.43}, {'name': '宁夏', 'value': 1689.65}, {'name': '新疆', 'value': 5437.47}];
   option={
     //backgroundColor: '#FFFFFF',
     title: {
       text: '地域分布',
       top: 14,
       left: 14,
       textStyle: {
         borderColor: '#333333',
         fontWeight: 400,
         fontFamily: 'PingFangSC-Regular, PingFang SC',
         color: '#666666',
         fontSize: 14
       }
     },
     tooltip: {
       trigger: 'item',
       show: true,
       formatter: function(params) {
         //return params.data['region'] + ':' + params.data['GDP'] + '%'
         return params.name + ':' + params.data['value'] 
       }
     },
     // 左侧小导航图标
     visualMap: {
       show: false,
       x: 'left',
       y: 'center',
       min: 0,
       max: 50000,
       color: ['#3644BF', '#B7C8FF']
     },
     // 配置属性
     series: [{
       name: '数据',
       type: 'map',
       mapType: 'china',
       roam: false,
       label: {
         normal: {
           show: false // 省份名称
         },
         emphasis: {
           show: false
         }
       },
       itemStyle: {
         normal: { // 未选中状态
           // areaColor: 'red', // 南沙诸岛背景颜色
           borderColor: 'transparent',
           label: {
             show: true// 显示名称
           }
         },
         emphasis: { // 也是选中样式
           areaColor: '#49FFE9',
           shadowColor: 'rgba(0,0,0,0.2)',
           shadowOffsetX: 0, // 阴影水平方向上的偏移距离
           shadowOffsetY: 4, // 阴影垂直方向上的偏移距离
           shadowBlur: 8, // 图形阴影的模糊大小。
           label: {
             show: true,
             textStyle: {
               color: '#fff'
             }
           }
         }
       },
       data:result
     }]
   };
   mapChart.setOption(option);
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档