鱼C论坛

 找回密码
 立即注册
查看: 3851|回复: 0

[学习笔记] 将风险地图的代码区分一下

[复制链接]
发表于 2021-4-24 11:00:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
相较于之前的代码,我将取数据库数据并修改的代码写到一个新的php文件中去(mysql_RiskDataGet.php),然后在JavaScript中嵌入PHP代码进行引入。需要注意的是,这个JavaScript本身是存在于php代码中的(见代码后缀),所以该JavaScript中的PHP是可以被解析的。
acumulator_test.php:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>pie</title>
  8.     <!--引入链接-->
  9.     <script src="echarts.js"></script>
  10.     <script src="jquery.js"></script>
  11.     <script src="jquery.table2excel.js"></script>
  12. </head>
  13. <body>
  14.     <!--每个div单独占据一行,如果想要显示多个统计图,可以创建多个div-->
  15.     <div id="main" style="height: 400px;width: 1024px;"></div>
  16.     <div id="main2" style="height: 400px;width: 1024px;"></div>
  17.     <script type="text/javascript">
  18.         <?php
  19.             //添加公共文件
  20.             include_once 'mysql_public.php';
  21.             //获取所有风险记录
  22.             include_once 'mysql_RiskDataGet.php';
  23.         ?>
  24.         //引用该js文件后,该js文件需要获取外部数据
  25.         var RiskNum_json = <?=$RiskNum_json?>;
  26.         var RiskNum = eval(RiskNum_json);
  27.         //color为此系列自己的调色盘
  28.         //radius:饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
  29.         //数据库传递过来的数据项是一个二维数组,如何处理?
  30.         //解:将数组传递给data即可
  31.         //value_1,表示高风险总数。以此类推。
  32.         var value_1 = RiskNum['2019']['高风险']+RiskNum['2020']['高风险']+RiskNum['2021']['高风险'];
  33.         var value_2 = RiskNum['2019']['中风险']+RiskNum['2020']['中风险']+RiskNum['2021']['中风险'];
  34.         var value_3 = RiskNum['2019']['低风险']+RiskNum['2020']['低风险']+RiskNum['2021']['低风险'];
  35.         var value_2019 = RiskNum['2019']['高风险']+RiskNum['2019']['中风险']+RiskNum['2019']['低风险'];
  36.         var value_2020 = RiskNum['2020']['高风险']+RiskNum['2020']['中风险']+RiskNum['2020']['低风险'];
  37.         var value_2021 = RiskNum['2021']['高风险']+RiskNum['2021']['中风险']+RiskNum['2021']['低风险'];
  38.         var RiskData = [
  39.             {value:value_1,name:"较大风险"},
  40.             {value:value_2,name:"中风险"},
  41.             {value:value_3,name:"低风险"},
  42.         ];
  43.         var RiskData2 = [
  44.             {value:value_2019,name:"2019年风险数量"},
  45.             {value:value_2020,name:"2020年风险数量"},
  46.             {value:value_2021,name:"2021年风险数量"},
  47.         ];

  48.         //定位:如果使用center/middle等位置描述,需写成字符串格式,百分比也这么写:radius:'55%'。如果写绝对值,那么以number形式书写,单位是像数值(单位不用写)
  49.         var myChart = echarts.init(document.getElementById("main"));
  50.         var option = {
  51.             title: [{
  52.                 text: '风险统计图',
  53.                 left: "center"
  54.             },{
  55.                 subtext: "风险类型占比",
  56.                 left: "18%",
  57.                 top: "75%",
  58.                 textAline:'center'
  59.             },{
  60.                 subtext: "年度风险总量",
  61.                 left: "74%",
  62.                 top: "75%",
  63.                 textAline:'center'
  64.             }],
  65.             tooltip: {   
  66.                 trigger: 'item',
  67.                 //饼图: a:系列名,b:数据名,c:数值,d:百分比。
  68.                 //formatter,提示框浮层内容格式器,支持字符串模板和回调函数两种形式。
  69.                 formatter: '{a} <br/>{b} : {c} ({d}%)'
  70.             },
  71.             toolbox:{
  72.                 show: true,
  73.                 feature: {
  74.                     mark: {show: true},
  75.                     dataView: {
  76.                         show: true,
  77.                         readOnly: false,
  78.                         lang: ['数据视图', '关闭', '导出Excel'],    // 按钮
  79.                         contentToOption: function (opts) {
  80.                             $("#tableExcel_Day").table2excel({           // 下载jquery.table2excel.js,引入,$("#tempChart")是table的id
  81.                                 exclude: ".noExl", //过滤位置的 css 类名, 有class = “noExl” 的行不被导出
  82.                                 filename: '风险统计图' + ".xls", // 文件名称
  83.                                 name: "Excel Document Name.xls",
  84.                                 exclude_img: true,
  85.                                 exclude_links: true,
  86.                                 exclude_inputs: true
  87.                             });
  88.                         },
  89.                         optionToContent:function(option){
  90.                             var legend = option.legend;
  91.                             var series = option.series; //坐标数据
  92.                             var tdHeads = ''; //表头第一列
  93.                             var tdBodys = ''; //表数据
  94.                             //组装表头
  95.                             var nameData = new Array('较大风险','中风险','低风险','2019年风险数量','2020年风险数量','2021年风险数量');
  96.                             for (var i = 0; i < nameData.length; i++) {
  97.                                 tdHeads += '<td style="padding: 0 10px">' + nameData[i] + '</td>';
  98.                             }
  99.                             var table = '<table id="tableExcel_Day" border="1" class="table-bordered table-striped" style="width:100%;text-align:center" ><tbody><tr>' + tdHeads + '</tr>';
  100.                             //组装表数据
  101.                             for (var i = 0; i < 2;  i++) {
  102.                                 for (var j = 0; j < 3 ; j++) {                          
  103.                                     var temp = series[i].data[j]['value'];
  104.                                     if (temp != null && temp != undefined) {                                    
  105.                                         tdBodys += '<td>' + temp + '</td>';      
  106.                                     } else {
  107.                                         tdBodys += '<td></td>';
  108.                                     }
  109.                                 }
  110.                                 // table += '<tr>' + tdBodys + '</tr>';
  111.                                 // tdBodys = '';
  112.                             }
  113.                             table += '<tr>' + tdBodys + '</tr>';
  114.                             table += '</tbody></table>';
  115.                             return table;
  116.                         }
  117.                     },
  118.                     restore: {show: true},
  119.                     saveAsImage: {show: true}
  120.                 }
  121.             },
  122.             legend: {
  123.                 data:['较大风险','中风险','低风险','2019年风险数量','2020年风险数量','2021年风险数量'],
  124.                 top:'10%',
  125.             },
  126.             series:[{
  127.                 name: "风险类型占比",
  128.                 color:['red','orange','blue'],
  129.                 type: "pie",
  130.                 radius: '35%',
  131.                 center:['50%','50%'],
  132.                 data: RiskData,
  133.                 right:'55%',
  134.                 left:0,
  135.                 top:0,
  136.                 buttom:0
  137.             },{
  138.                 name: "年度风险总量",
  139.                 color:['red','orange','pink'],
  140.                 type: "pie",
  141.                 radius: '35%',
  142.                 data: RiskData2,
  143.                 left:'55%',
  144.                 right:0,
  145.                 top:0,
  146.                 buttom:0
  147.             }]
  148.         };
  149.         myChart.setOption(option);
  150.         // 处理点击事件并且弹出数据名称
  151.         myChart.on('click', function (params) {
  152.             alert(params.name);
  153.         });
  154.     </script>
  155.     <script type="text/javascript">
  156.         <?php
  157.             //添加公共文件
  158.             include_once 'mysql_public.php';
  159.             //获取所有风险记录
  160.             include_once 'mysql_RiskDataGet.php';
  161.         ?>
  162.         //引用该js文件后,该js文件需要获取外部数据
  163.         var RiskNum_json = <?=$RiskNum_json?>;
  164.         var RiskNum = eval(RiskNum_json);
  165.         //输出2019年高风险数据,测试传输成功与否
  166.         //alert(RiskNum['2019']['高风险']);
  167.         //legend:图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
  168.         //legend,会在统计图顶部显示不同颜色的按钮。
  169.         var myChart = echarts.init(document.getElementById('main2'));
  170.         var option = {
  171.             title:{text:"年度风险数量对比直方图",left:"center"},
  172.             legend: {
  173.                 top:"7%",
  174.                 data:['高风险','中风险','低风险']
  175.             },
  176.             toolbox: {
  177.                 show :true,
  178.                 feature: {
  179.                     dataView:{
  180.                         show:true,
  181.                         title:'数据视图',
  182.                         lang: ['数据视图', '关闭', '导出Excel'],    // 按钮
  183.                         contentToOption: function (opts) {
  184.                             $("#tableExcel_Day").table2excel({           // 下载jquery.table2excel.js,引入,$("#tempChart")是table的id
  185.                                 exclude: ".noExl", //过滤位置的 css 类名, 有class = “noExl” 的行不被导出
  186.                                 filename: '风险统计图' + ".xls", // 文件名称
  187.                                 name: "Excel Document Name.xls",
  188.                                 exclude_img: true,
  189.                                 exclude_links: true,
  190.                                 exclude_inputs: true
  191.                             });
  192.                         },
  193.                         optionToContent:function(option){
  194.                         var dataset = option.dataset;
  195.                         var axisData = option.xAxis[0].data; //坐标数据
  196.                         var tdHeads = '<td  style="padding: 0 10px">时间</td>'; //表头第一列
  197.                         var tdBodys = ''; //表数据
  198.                         //组装表头
  199.                         var nameData = new Array("高风险","中风险","低风险");
  200.                         for (var i = 0; i < nameData.length; i++) {
  201.                             tdHeads += '<td style="padding: 0 10px">' + nameData[i] + '</td>';
  202.                         }
  203.                         var table = '<table id="tableExcel_Day" border="1" class="table-bordered table-striped" style="width:100%;text-align:center" ><tbody><tr>' + tdHeads + '</tr>';
  204.                         //组装表数据
  205.                         for (var i = 1; i < 4;  i++) {
  206.                             for (var j = 1; j < 4 ; j++) {                          
  207.                                 var temp = dataset[0].source[i][j];
  208.                                 if (temp != null && temp != undefined) {                                    
  209.                                     tdBodys += '<td>' + temp + '</td>';      
  210.                                 } else {
  211.                                     tdBodys += '<td></td>';
  212.                                 }
  213.                             }
  214.                             table += '<tr><td style="padding: 0 10px">' + axisData[i-1] + '</td>' + tdBodys + '</tr>';
  215.                             tdBodys = '';
  216.                         }
  217.                         table += '</tbody></table>';
  218.                         return table;
  219.                     }},
  220.                     restore:{show:true},
  221.                     magicType:{type:['bar','line']},
  222.                     saveAsImage:{show:true}
  223.                 }
  224.             },
  225.             tooltip: {
  226.             },
  227.             xAxis:{
  228.                 type:'category',
  229.                 data: ['2019','2020','2021']   
  230.             },
  231.             yAxis:{
  232.                 type:'value'
  233.             },
  234.             dataset:{
  235.                 source:[
  236.                     ['year','高风险','中风险','低风险'],
  237.                     ['2019',RiskNum['2019']['高风险'],RiskNum['2019']['中风险'],RiskNum['2019']['低风险']],
  238.                     ['2020',RiskNum['2020']['高风险'],RiskNum['2020']['中风险'],RiskNum['2020']['低风险']],
  239.                     ['2021',RiskNum['2021']['高风险'],RiskNum['2021']['中风险'],RiskNum['2021']['低风险']],
  240.                 ]
  241.             },
  242.             series: [
  243.                 {
  244.                     //name: '高风险',
  245.                     type: 'bar',
  246.                     // 根据stack的值来选取那些柱子堆叠在一起
  247.                     stack: '风险等级',
  248.                     color: 'red',
  249.                     emphasis: {
  250.                         focus: 'series'
  251.                     },
  252.                     //data: [320, 332, 301],
  253.                     barWidth: '25%'
  254.                 },
  255.                 {
  256.                     //name: '中风险',
  257.                     type: 'bar',
  258.                     stack: '风险等级',
  259.                     color: 'orange',
  260.                     emphasis: {
  261.                         focus: 'series'
  262.                     },
  263.                     //data: [120, 132, 101],
  264.                     barWidth: '25%'
  265.                 },
  266.                 {
  267.                     //name: '低风险',
  268.                     type: 'bar',
  269.                     stack: '风险等级',
  270.                     color: 'blue',
  271.                     emphasis: {
  272.                         focus: 'series'
  273.                     },
  274.                     //data: [220, 182, 191],
  275.                     barWidth: '25%'
  276.                 }
  277.             ]
  278.         };
  279.         //把配置项给实例对象
  280.         myChart.setOption(option);
  281.     </script>
  282. </body>
  283. </html>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 14:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表