鱼C论坛

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

[学习笔记] echarts--》柱状图引入数据库数据

[复制链接]
发表于 2021-4-20 09:30:52 | 显示全部楼层 |阅读模式

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

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

x
  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. </head>
  11. <body>
  12.     <!--每个div单独占据一行,如果想要显示多个统计图,可以创建多个div-->
  13.     <div id="main" style="height: 400px;width: 1024px;"></div>
  14.     <div id="main2" style="height: 400px;width: 1024px;"></div>
  15.     <script src="test_js.js"></script>
  16.     <script type="text/javascript">
  17.         <?php
  18.             //添加公共文件
  19.             include_once 'mysql_public.php';
  20.             //获取所有风险记录
  21.             $sql_risk = "SELECT * FROM `trisk_list`";
  22.             //获取前100条管道信息
  23.             $sql = "SELECT * FROM `lines` LIMIT 100";
  24.             //获取结果集
  25.             $res = myerror($sql);
  26.             $res_risk = myerror($sql_risk);
  27.             //获取结果集数据条数:多少行记录
  28.             $rows =  mysqli_num_rows($res);
  29.             $rows_risk = mysqli_num_rows($res_risk);
  30.             //保存取出的记录:
  31.             $points = array();
  32.             //利用while获取,每次取到数据之后判断保存数据的结果,只要结果不为false,那么一直取
  33.             while($row = mysqli_fetch_assoc($res))
  34.             {
  35.                 $points[] = $row;    //于是points成为二维数组
  36.             }
  37.             while($row_risk = mysqli_fetch_assoc($res_risk))
  38.             {
  39.                 //获取风险统计数组
  40.                 $risks[] = $row_risk;
  41.             }
  42.             //echo '<pre>';
  43.             //建立一个循环,修改每个风险记录的时间,只保留年份。
  44.             for($index = 0; $index < $rows_risk; $index++)
  45.             {
  46.                 //对日期部分进行分割,分割后返回的datetime为一个数组。
  47.                 $dateTime = explode('-',$risks[$index]['Record_time']);
  48.                 //令风险记录时间只保留年份
  49.                 $risks[$index]['Record_time'] = $dateTime[0];
  50.             }
  51.             //输出修改后的风险记录
  52.             //var_dump($risks);

  53.             //设计一个变量来接受各个年份的数据
  54.             $RiskNum = array(
  55.                 '2019'=>array(
  56.                     '高风险'=>0,
  57.                     '中风险'=>0,
  58.                     '低风险'=>0
  59.                 ),
  60.                 '2020'=>array(
  61.                     '高风险'=>0,
  62.                     '中风险'=>0,
  63.                     '低风险'=>0
  64.                 ),
  65.                 '2021'=>array(
  66.                     '高风险'=>0,
  67.                     '中风险'=>0,
  68.                     '低风险'=>0
  69.                 )
  70.             );
  71.             //记录不同年份的各个风险类型的数量。
  72.             for($index = 0; $index < $rows_risk; $index++)
  73.             {
  74.                 if((int)($risks[$index]['Record_time']) == 2019)
  75.                 {
  76.                     if((int)($risks[$index]['Risk_type']) == 1)
  77.                     {
  78.                         $RiskNum['2019']['高风险']++;
  79.                     }
  80.                     else if((int)($risks[$index]['Risk_type']) == 2)
  81.                     {
  82.                         $RiskNum['2019']['中风险']++;
  83.                     }
  84.                     else if((int)($risks[$index]['Risk_type']) == 3)
  85.                     {
  86.                         $RiskNum['2019']['低风险']++;
  87.                     }
  88.                 }
  89.                 else if((int)($risks[$index]['Record_time']) == 2020)
  90.                 {
  91.                     if((int)($risks[$index]['Risk_type']) == 1)
  92.                     {
  93.                         $RiskNum['2020']['高风险']++;
  94.                     }
  95.                     else if((int)($risks[$index]['Risk_type']) == 2)
  96.                     {
  97.                         $RiskNum['2020']['中风险']++;
  98.                     }
  99.                     else if((int)($risks[$index]['Risk_type']) == 3)
  100.                     {
  101.                         $RiskNum['2020']['低风险']++;
  102.                     }
  103.                 }
  104.                 else if((int)($risks[$index]['Record_time']) == 2021)
  105.                 {
  106.                     if((int)($risks[$index]['Risk_type']) == 1)
  107.                     {
  108.                         $RiskNum['2021']['高风险']++;
  109.                     }
  110.                     else if((int)($risks[$index]['Risk_type']) == 2)
  111.                     {
  112.                         $RiskNum['2021']['中风险']++;
  113.                     }
  114.                     else if((int)($risks[$index]['Risk_type']) == 3)
  115.                     {
  116.                         $RiskNum['2021']['低风险']++;
  117.                     }
  118.                 }
  119.             }

  120.             //输出风险数量数组
  121.             //var_dump($RiskNum);

  122.             //将php数组转为json格式
  123.             $RiskNum_json = json_encode($RiskNum);
  124.         ?>
  125.         //引用该js文件后,该js文件需要获取外部数据
  126.         var RiskNum_json = <?=$RiskNum_json?>;
  127.         var RiskNum = eval(RiskNum_json);
  128.         //输出2019年高风险数据,测试传输成功与否
  129.         //alert(RiskNum['2019']['高风险']);
  130.         //legend:图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
  131.         //legend,会在统计图顶部显示不同颜色的按钮。
  132.         var myChart = echarts.init(document.getElementById('main2'));
  133.         var option = {
  134.             title:{text:"年度风险数量对比直方图",left:"center"},
  135.             legend: {
  136.                 top:"7%",
  137.                 data:['高风险','中风险','低风险']
  138.             },
  139.             toolbox: {
  140.                 show :true,
  141.                 feature: {
  142.                     dataView:{show:true,title:'数据视图',optionToContent:function(){
  143.                         var table = '<table class="dataViewTable"><tbody><tr class="dataViewTr">'
  144.                                   + '<td class="dataViewHead">' + 'year'+ '</td>'
  145.                                   + '<td class="dataViewHead">' + '高风险' + '</td>'
  146.                                   + '<td class="dataViewHead">' + '中风险' + '</td>'
  147.                                   + '<td class="dataViewHead">' + '低风险' + '</td>'
  148.                                   + '</tr>';
  149.                         for(var index = 2019; index <= 2021; index++){
  150.                             var year = index.toString();
  151.                             table += '<tr class="dataViewTr">'
  152.                                   + '<td class="dataViewTd">' + index + '</td>'
  153.                                   + '<td class="dataViewTd">' + RiskNum[year]['高风险'] + '</td>'
  154.                                   + '<td class="dataViewTd">' + RiskNum[year]['中风险'] + '</td>'
  155.                                   + '<td class="dataViewTd">' + RiskNum[year]['低风险'] + '</td>'
  156.                                   + '</tr>';
  157.                         }
  158.                         table += '</tbody></table>';
  159.                         return table;
  160.                     }},
  161.                     restore:{show:true},
  162.                     magicType:{type:['bar','line']},
  163.                     saveAsImage:{show:true}
  164.                 }
  165.             },
  166.             tooltip: {
  167.             },
  168.             xAxis:{
  169.                 type:'category',
  170.                 data: ['2019','2020','2021']   
  171.             },
  172.             yAxis:{
  173.                 type:'value'
  174.             },
  175.             dataset:{
  176.                 source:[
  177.                     ['year','高风险','中风险','低风险'],
  178.                     ['2019',RiskNum['2019']['高风险'],RiskNum['2019']['中风险'],RiskNum['2019']['低风险']],
  179.                     ['2020',RiskNum['2019']['高风险'],RiskNum['2020']['中风险'],RiskNum['2020']['低风险']],
  180.                     ['2021',RiskNum['2021']['高风险'],RiskNum['2021']['中风险'],RiskNum['2021']['低风险']],
  181.                 ]
  182.             },
  183.             series: [
  184.                 {
  185.                     //name: '高风险',
  186.                     type: 'bar',
  187.                     // 根据stack的值来选取那些柱子堆叠在一起
  188.                     stack: '风险等级',
  189.                     color: 'red',
  190.                     emphasis: {
  191.                         focus: 'series'
  192.                     },
  193.                     //data: [320, 332, 301],
  194.                     barWidth: '25%'
  195.                 },
  196.                 {
  197.                     //name: '中风险',
  198.                     type: 'bar',
  199.                     stack: '风险等级',
  200.                     color: 'orange',
  201.                     emphasis: {
  202.                         focus: 'series'
  203.                     },
  204.                     //data: [120, 132, 101],
  205.                     barWidth: '25%'
  206.                 },
  207.                 {
  208.                     //name: '低风险',
  209.                     type: 'bar',
  210.                     stack: '风险等级',
  211.                     color: 'blue',
  212.                     emphasis: {
  213.                         focus: 'series'
  214.                     },
  215.                     //data: [220, 182, 191],
  216.                     barWidth: '25%'
  217.                 }
  218.             ]
  219.         };
  220.         //把配置项给实例对象
  221.         myChart.setOption(option);
  222.     </script>
  223. </body>
  224. </html>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 04:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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