<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>pie</title>
<!--引入链接-->
<script src="echarts.js"></script>
</head>
<body>
<!--每个div单独占据一行,如果想要显示多个统计图,可以创建多个div-->
<div id="main" style="height: 400px;width: 1024px;"></div>
<div id="main2" style="height: 400px;width: 1024px;"></div>
<script src="test_js.js"></script>
<script type="text/javascript">
<?php
//添加公共文件
include_once 'mysql_public.php';
//获取所有风险记录
$sql_risk = "SELECT * FROM `trisk_list`";
//获取前100条管道信息
$sql = "SELECT * FROM `lines` LIMIT 100";
//获取结果集
$res = myerror($sql);
$res_risk = myerror($sql_risk);
//获取结果集数据条数:多少行记录
$rows = mysqli_num_rows($res);
$rows_risk = mysqli_num_rows($res_risk);
//保存取出的记录:
$points = array();
//利用while获取,每次取到数据之后判断保存数据的结果,只要结果不为false,那么一直取
while($row = mysqli_fetch_assoc($res))
{
$points[] = $row; //于是points成为二维数组
}
while($row_risk = mysqli_fetch_assoc($res_risk))
{
//获取风险统计数组
$risks[] = $row_risk;
}
//echo '<pre>';
//建立一个循环,修改每个风险记录的时间,只保留年份。
for($index = 0; $index < $rows_risk; $index++)
{
//对日期部分进行分割,分割后返回的datetime为一个数组。
$dateTime = explode('-',$risks[$index]['Record_time']);
//令风险记录时间只保留年份
$risks[$index]['Record_time'] = $dateTime[0];
}
//输出修改后的风险记录
//var_dump($risks);
//设计一个变量来接受各个年份的数据
$RiskNum = array(
'2019'=>array(
'高风险'=>0,
'中风险'=>0,
'低风险'=>0
),
'2020'=>array(
'高风险'=>0,
'中风险'=>0,
'低风险'=>0
),
'2021'=>array(
'高风险'=>0,
'中风险'=>0,
'低风险'=>0
)
);
//记录不同年份的各个风险类型的数量。
for($index = 0; $index < $rows_risk; $index++)
{
if((int)($risks[$index]['Record_time']) == 2019)
{
if((int)($risks[$index]['Risk_type']) == 1)
{
$RiskNum['2019']['高风险']++;
}
else if((int)($risks[$index]['Risk_type']) == 2)
{
$RiskNum['2019']['中风险']++;
}
else if((int)($risks[$index]['Risk_type']) == 3)
{
$RiskNum['2019']['低风险']++;
}
}
else if((int)($risks[$index]['Record_time']) == 2020)
{
if((int)($risks[$index]['Risk_type']) == 1)
{
$RiskNum['2020']['高风险']++;
}
else if((int)($risks[$index]['Risk_type']) == 2)
{
$RiskNum['2020']['中风险']++;
}
else if((int)($risks[$index]['Risk_type']) == 3)
{
$RiskNum['2020']['低风险']++;
}
}
else if((int)($risks[$index]['Record_time']) == 2021)
{
if((int)($risks[$index]['Risk_type']) == 1)
{
$RiskNum['2021']['高风险']++;
}
else if((int)($risks[$index]['Risk_type']) == 2)
{
$RiskNum['2021']['中风险']++;
}
else if((int)($risks[$index]['Risk_type']) == 3)
{
$RiskNum['2021']['低风险']++;
}
}
}
//输出风险数量数组
//var_dump($RiskNum);
//将php数组转为json格式
$RiskNum_json = json_encode($RiskNum);
?>
//引用该js文件后,该js文件需要获取外部数据
var RiskNum_json = <?=$RiskNum_json?>;
var RiskNum = eval(RiskNum_json);
//输出2019年高风险数据,测试传输成功与否
//alert(RiskNum['2019']['高风险']);
//legend:图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
//legend,会在统计图顶部显示不同颜色的按钮。
var myChart = echarts.init(document.getElementById('main2'));
var option = {
title:{text:"年度风险数量对比直方图",left:"center"},
legend: {
top:"7%",
data:['高风险','中风险','低风险']
},
toolbox: {
show :true,
feature: {
dataView:{show:true,title:'数据视图',optionToContent:function(){
var table = '<table class="dataViewTable"><tbody><tr class="dataViewTr">'
+ '<td class="dataViewHead">' + 'year'+ '</td>'
+ '<td class="dataViewHead">' + '高风险' + '</td>'
+ '<td class="dataViewHead">' + '中风险' + '</td>'
+ '<td class="dataViewHead">' + '低风险' + '</td>'
+ '</tr>';
for(var index = 2019; index <= 2021; index++){
var year = index.toString();
table += '<tr class="dataViewTr">'
+ '<td class="dataViewTd">' + index + '</td>'
+ '<td class="dataViewTd">' + RiskNum[year]['高风险'] + '</td>'
+ '<td class="dataViewTd">' + RiskNum[year]['中风险'] + '</td>'
+ '<td class="dataViewTd">' + RiskNum[year]['低风险'] + '</td>'
+ '</tr>';
}
table += '</tbody></table>';
return table;
}},
restore:{show:true},
magicType:{type:['bar','line']},
saveAsImage:{show:true}
}
},
tooltip: {
},
xAxis:{
type:'category',
data: ['2019','2020','2021']
},
yAxis:{
type:'value'
},
dataset:{
source:[
['year','高风险','中风险','低风险'],
['2019',RiskNum['2019']['高风险'],RiskNum['2019']['中风险'],RiskNum['2019']['低风险']],
['2020',RiskNum['2019']['高风险'],RiskNum['2020']['中风险'],RiskNum['2020']['低风险']],
['2021',RiskNum['2021']['高风险'],RiskNum['2021']['中风险'],RiskNum['2021']['低风险']],
]
},
series: [
{
//name: '高风险',
type: 'bar',
// 根据stack的值来选取那些柱子堆叠在一起
stack: '风险等级',
color: 'red',
emphasis: {
focus: 'series'
},
//data: [320, 332, 301],
barWidth: '25%'
},
{
//name: '中风险',
type: 'bar',
stack: '风险等级',
color: 'orange',
emphasis: {
focus: 'series'
},
//data: [120, 132, 101],
barWidth: '25%'
},
{
//name: '低风险',
type: 'bar',
stack: '风险等级',
color: 'blue',
emphasis: {
focus: 'series'
},
//data: [220, 182, 191],
barWidth: '25%'
}
]
};
//把配置项给实例对象
myChart.setOption(option);
</script>
</body>
</html>