1 饼状图
示例图
前台代码html:
<div>
<div id="yhzhfx"></div>
</div>
前台代码js:
var myChart = echarts.init(document.getElementById('yhzhfx'));
option = {
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {
show: true,
type: ['pie', 'funnel']
},
myTool1: {
show: true,
title: '导出',
onclick: function (){
alert('1')
}
},
saveAsImage : {show: true}
}
},
calculable : false,
series : [
{
name:'',
type:'pie',
selectedMode: 'single',
radius : [0, 30],
x: '20%',
width: '30%',
funnelAlign: 'right',
max: 1548,
itemStyle : {
normal : {
label : {
position : 'inner'
},
labelLine : {
show : false
}
}
},
color:['#1FC2FF','#F7C754'],
data:[]
},
{
name:'',
type:'pie',
radius : [40, 55],
x: '30%',
width: '20%',
funnelAlign: 'left',
max: 1048,
color:['#1FC2FF','#F7C754','#4D7FFF','#AA78FF','#05D9B3','#FF845E'],
data:[]
},
{
name:'',
type:'pie',
radius : [70, 85],
x: '30%',
width: '20%',
funnelAlign: 'left',
max: 1048,
color:['#4D7FFF','#AA78FF','#FF845E','#05D9B3','#1FC2FF'],
data:[
]
}
]
};
myChart.showLoading(); //数据加载完之前先显示一段简单的loading动画
$.ajax({
//这里需要三个res数组来装三个饼状环数据,在data使用function()进行遍历后台传来的值装入每个res数组中
url: "xxx/yhpczlWtyhzhfx",
success: function(data){
var res=[];
var item=data.list1;
var res1=[];
var item1=data.list2;
var res2=[];
var item2=data.list3;
myChart.hideLoading(); //隐藏加载动画
myChart.setOption({ //加载数据图表
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {
show: true,
type: ['pie', 'funnel']
},
myTool1: {
show: true,
title: '导出',
onclick: function (){
alert('1')
}
},
saveAsImage : {show: true}
}
},
calculable : false,
series : [
{
name:'',
type:'pie',
selectedMode: 'single',
radius : [0, 30],
x: '20%',
width: '30%',
funnelAlign: 'right',
max: 1548,
itemStyle : {
normal : {
label : {
position : 'inner'
},
labelLine : {
show : false
}
}
},
color:['#1FC2FF','#F7C754'],
data:function () {
for(var i=0;i<item.length;i++){
res.push({
name:item[i].name,
value:item[i].value
});
}
return res;
}()
},
{
name:'',
type:'pie',
radius : [40, 55],
x: '30%',
width: '20%',
funnelAlign: 'left',
max: 1048,
color:['#1FC2FF','#F7C754','#4D7FFF','#AA78FF','#05D9B3','#FF845E'],
data:function () {
for(var i=0;i<item1.length;i++){
res1.push({
name:item1[i].name,
value:item1[i].value
});
}
return res1;
}()
},
{
name:'',
type:'pie',
radius : [70, 85],
x: '30%',
width: '20%',
funnelAlign: 'left',
max: 1048,
color:['#4D7FFF','#AA78FF','#FF845E','#05D9B3','#1FC2FF'],
data:function () {
for(var i=0;i<item2.length;i++){
res2.push({
name:item2[i].name,
value:item2[i].value
});
}
return res2;
}()
}
]
})
}});
数据库部分:
1 环:
2 环:
3 环:
java后台Sql方法:
<select id="yhpczlWtyhzhfx_1List" resultType="map">
SELECT
*
FROM
yhpczl_wtyhzhfx_1
</select>
<select id="yhpczlWtyhzhfx_2List" resultType="map">
SELECT
*
FROM
yhpczl_wtyhzhfx_2
</select>
<select id="yhpczlWtyhzhfx_3List" resultType="map">
SELECT
*
FROM
yhpczl_wtyhzhfx_3
</select>
java后台Controller:
public JSONObject yhpczlWtyhzhfx(){
JSONObject jsonObject = new JSONObject();
List<YhpczlWtyhzhfx_1> list1 = iThreeInOneInfoService.yhpczlWtyhzhfx_1List();
List<YhpczlWtyhzhfx_2> list2 = iThreeInOneInfoService.yhpczlWtyhzhfx_2List();
List<YhpczlWtyhzhfx_3> list3 = iThreeInOneInfoService.yhpczlWtyhzhfx_3List();
jsonObject.put("list1",list1);
jsonObject.put("list2",list2);
jsonObject.put("list3",list3);
return jsonObject;
}
2 柱状图
示例图:
前台html代码:
<div>
<div id="aqfxqdzhfx"></div>
</div>
前台js代码:
var myChart2 = echarts.init(document.getElementById('aqfxqdzhfx'));
option2 = {
tooltip : {
trigger: 'axis'
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar']},
/*restore : {show: true},*/
myTool1: {
show: true,
title: '导出',
onclick: function (){
alert('1')
}
},
saveAsImage : {show: true}
}
},
calculable : true,
legend: {
/*x: 'left',
left: 30,*/
top:5,
color:['#FF845E','#F7C754','#AA78FF','#1FC2FF','#1FC2FF'],
data:['检查次数-计划','检查清单数-计划','检查次数-实际','排查清单数-实际','发现隐患数']
},
xAxis : [
{
type : 'category',
data : ['01月','02月','03月','04月','05月','06月','07月','08月','09月','10月','11月','12月']
}
],
yAxis : [
{
type : 'value',
name : '排查次数',
axisLabel : {
formatter: '{value} 次'
}
},
{
type : 'value',
name : '排查清单数',
axisLabel : {
formatter: '{value} 个'
}
}
],
series : [
{
name:'检查次数-计划',
type:'bar',
color:['#FF845E'],
data:[]
},
{
name:'检查清单数-计划',
type:'bar',
color:['#F7C754'],
data:[]
},
{
name:'检查次数-实际',
type:'bar',
color:['#AA78FF'],
data:[]
},
{
name:'排查清单数-实际',
type:'bar',
yAxisIndex: 1,
color:['#1FC2FF'],
data:[]
},
{
name:'发现隐患数',
type:'line',
color:['#05D9B3'],
data:[]
}
]
};
myChart2.showLoading(); //数据加载完之前先显示一段简单的loading动画
$.ajax({
url: "xxxx/yhpczlAqfxqdzhfx",
success: function(data){
var res1 = [];
var res2 = [];
var res3 = [];
var res4 = [];
var res5 = [];
var item=data.list;
myChart2.hideLoading(); //隐藏加载动画
myChart2.setOption({ //加载数据图表
tooltip : {
trigger: 'axis'
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar']},
/*restore : {show: true},*/
myTool1: {
show: true,
title: '导出',
onclick: function (){
alert('1')
}
},
saveAsImage : {show: true}
}
},
calculable : true,
legend: {
/*x: 'left',
left: 30,*/
top:5,
color:['#FF845E','#F7C754','#AA78FF','#1FC2FF','#1FC2FF'],
data:['检查次数-计划','检查清单数-计划','检查次数-实际','排查清单数-实际','发现隐患数']
},
xAxis : [
{
type : 'category',
data : ['01月','02月','03月','04月','05月','06月','07月','08月','09月','10月','11月','12月']
}
],
yAxis : [
{
type : 'value',
name : '排查次数',
axisLabel : {
formatter: '{value} 次'
}
},
{
type : 'value',
name : '排查清单数',
axisLabel : {
formatter: '{value} 个'
}
}
],
series : [
{
name:'检查次数-计划',
type:'bar',
color:['#FF845E'],
data:function () {
for(var i=0;i<item.length;i++){
res1.push(item[i].value1);
}
return res1;
}()
},
{
name:'检查清单数-计划',
type:'bar',
color:['#F7C754'],
data:function () {
for(var i=0;i<item.length;i++){
res2.push(item[i].value2);
}
return res2;
}()
},
{
name:'检查次数-实际',
type:'bar',
color:['#AA78FF'],
data:function () {
for(var i=0;i<item.length;i++){
res3.push(item[i].value3);
}
return res3;
}()
},
{
name:'排查清单数-实际',
type:'bar',
yAxisIndex: 1,
color:['#1FC2FF'],
data:function () {
for(var i=0;i<item.length;i++){
res4.push(item[i].value4);
}
return res4;
}()
},
{
name:'发现隐患数',
type:'line',
color:['#05D9B3'],
data:function () {
for(var i=0;i<item.length;i++){
res5.push(item[i].value5);
}
return res5;
}()
}
]
})
}});
数据库部分:
后台Sql代码:
<select id="yhpczlAqfxqdzhfxList" resultType="map">
SELECT
*
FROM
yhpczl_aqfxqdzhfx
</select>
后台Contorller代码:
public JSONObject yhpczlAqfxqdzhfx(){
JSONObject jsonObject = new JSONObject();
List<YhpczlAqfxqdzhfx> list = iThreeInOneInfoService.yhpczlAqfxqdzhfxList();
jsonObject.put("list",list);
return jsonObject;
}
3 折线图:
示例图:
前台html代码:
<div>
<div id="wtyhqsfx"></div>
</div>
前台js代码:
var myChart3 = echarts.init(document.getElementById('wtyhqsfx'));
option3 = {
tooltip : {
trigger: 'axis'
},
legend: {
/*x: 'left',
left: 50,*/
top:10,
data:['2018','2019']
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {show: true, type: ['line', 'bar']},
myTool1: {
show: true,
title: '导出',
onclick: function (){
alert('1')
}
},
/*restore : {show: true},*/
saveAsImage : {show: true}
}
},
calculable : true,
xAxis : [
{
type : 'category',
boundaryGap : false,
data : ['01月','02月','03月','04月','05月','06月','07月','08月','09月','10月','11月','12月']
}
],
yAxis : [
{
type : 'value'
}
],
series : [
{
name:'2018',
type:'line',
stack: '隐患个数',
color:['#1FC2FF'],
data:[]
},
{
name:'2019',
type:'line',
stack: '隐患个数',
color:['#F7C754'],
data:[]
}
]
};
myChart3.showLoading(); //数据加载完之前先显示一段简单的loading动画
$.ajax({
url: "xxx/yhpczlWtyhqsfx",
success: function(data){
var res1 = [];
var res = [];
var item=data.list;
myChart3.hideLoading(); //隐藏加载动画
myChart3.setOption({ //加载数据图表
tooltip : {
trigger: 'axis'
},
legend: {
/*x: 'left',
left: 50,*/
top:10,
data:['2018','2019']
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {show: true, type: ['line', 'bar']},
myTool1: {
show: true,
title: '导出',
onclick: function (){
alert('1')
}
},
/*restore : {show: true},*/
saveAsImage : {show: true}
}
},
calculable : true,
xAxis : [
{
type : 'category',
boundaryGap : false,
data : ['01月','02月','03月','04月','05月','06月','07月','08月','09月','10月','11月','12月']
}
],
yAxis : [
{
type : 'value'
}
],
series : [
{
name:'2018',
type:'line',
stack: '隐患个数',
color:['#1FC2FF'],
data:function () {
for(var i=0;i<item.length;i++){
res.push(item[i].value1);
}
return res;
}()
},
{
name:'2019',
type:'line',
stack: '隐患个数',
color:['#F7C754'],
data:function () {
for(var i=0;i<item.length;i++){
res1.push(item[i].value2);
}
return res1;
}()
}
]
})
}});
数据库部分:
后台Sql代码:
<select id="yhpczlWtyhqsfxList" resultType="map">
SELECT
*
FROM
yhpczl_wtyhqsfx
</select>
后台Controller:
public JSONObject yhpczlWtyhqsfx(){
JSONObject jsonObject = new JSONObject();
List<YhpczlWtyhqsfx> list = iThreeInOneInfoService.yhpczlWtyhqsfxList();
jsonObject.put("list",list);
return jsonObject;
}
复杂的十二月份的需求图:
复杂的十二月份的示例图:
因为查询的数据是一年的数据这一年的数据没有需求的数据多,所以有什么显示什么。
前台html:
<div class='navTtitle'>
<h4>安全生产标准化趋势分析</h4>
</div>
<div>
<div id="yhqsfx"></div>
</div>
前台js:
var myChart2 = echarts.init(document.getElementById('yhqsfx'));
myChart2.showLoading(); //数据加载完之前先显示一段简单的loading动画
$.ajax({
url: "/threeInOneInfoAqscbzhtjfx/aqscbzhtjfxQsfx?endTime="+endTime+"&coalMineCode="+coalMineCode+"&startTime="+startTime,
success: function(data){
var res1=[0,0,0,0,0,0,0,0,0,0,0,0];
var res2=[0,0,0,0,0,0,0,0,0,0,0,0];
var res3=[0,0,0,0,0,0,0,0,0,0,0,0];
var res4=[0,0,0,0,0,0,0,0,0,0,0,0];
var res5=[0,0,0,0,0,0,0,0,0,0,0,0];
var res6=[0,0,0,0,0,0,0,0,0,0,0,0];
var res7=[0,0,0,0,0,0,0,0,0,0,0,0];
var res8=[0,0,0,0,0,0,0,0,0,0,0,0];
var res9=[0,0,0,0,0,0,0,0,0,0,0,0];
var res10=[0,0,0,0,0,0,0,0,0,0,0,0];
var res11=[0,0,0,0,0,0,0,0,0,0,0,0];
var res12=[0,0,0,0,0,0,0,0,0,0,0,0];
var item=data.list;
myChart2.hideLoading(); //隐藏加载动画
myChart2.setOption({
tooltip : {
trigger: 'axis'
},
legend: {
top:10,
data:['调度和地面设施','安全培训和应急管理','职业卫生','运输','机电','掘进','采煤','地址灾害防治与测量','通风','事故隐患排查治理','安全风险分级管控']
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {show: true, type: ['line', 'bar']},
/*restore : {show: true},*/
saveAsImage : {show: true}
}
},
calculable : true,
xAxis : [
{
type : 'category',
boundaryGap : false,
data : ['01月','02月','03月','04月','05月','06月','07月','08月','09月','10月','11月','12月'],
}
],
yAxis : [
{
type : 'value',
name:'得分'
}
],
series : [
{
name:'调度和地面设施',
type:'line',
stack: '调度和地面设施',
color:['#1FC2FF'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="调度和地面设施"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res2[month-1]=(item[i].value);
}
}
return res2;
}()
},
{
name:'安全培训和应急管理',
type:'line',
stack: '安全培训和应急管理',
color:['#F7C754'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="安全培训和应急管理"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res3[month-1]=(item[i].value);
}
}
return res3;
}()
},
{
name:'职业卫生',
type:'line',
stack: '职业卫生',
color:['#FF845E'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="职业卫生"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res4[month-1]=(item[i].value);
}
}
return res4;
}()
},
{
name:'运输',
type:'line',
stack: '运输',
color:['#F7C754'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="运输"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res5[month-1]=(item[i].value);
}
}
return res5;
}()
},
{
name:'机电',
type:'line',
stack: '机电',
color:['#AA78FF'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="机电"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res6[month-1]=(item[i].value);
}
}
return res6;
}()
},
{
name:'掘进',
type:'line',
stack: '掘进',
color:['#1FC2FF'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="掘进"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res7[month-1]=(item[i].value);
}
}
return res7;
}()
},
{
name:'采煤',
type:'line',
stack: '采煤',
color:['#05D9B3'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="采煤"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res8[month-1]=(item[i].value);
}
}
return res8;
}()
},
{
name:'地质灾害防治与测量',
type:'line',
stack: '地质灾害防治与测量',
color:['#4D7FFF'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="地质灾害防治与测量"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res9[month-1]=(item[i].value);
}
}
return res9;
}()
},
{
name:'通风',
type:'line',
stack: '通风',
color:['#F03F3F'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="通风"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res10[month-1]=(item[i].value);
}
}
return res10;
}()
},
{
name:'事故隐患排查治理',
type:'line',
stack: '事故隐患排查治理',
color:['#333333'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="事故隐患排查治理"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res11[month-1]=(item[i].value);
}
}
return res11;
}()
},
{
name:'安全风险分级管控',
type:'line',
stack: '安全风险分级管控',
color:['#1FC2FF'],
data:function () {
for(var i=0;i<item.length;i++){
if(item[i].name=="安全风险分级管控"){
var mon =item[i].year;
var month = mon.substr(mon.length-2)
res12[month-1]=(item[i].value);
}
}
return res12;
}()
}
]
})
}});
=[0,0,0,0,0,0,0,0,0,0,0,0]初始化十二个月的值。
.substr(mon.length-2) 是因为后台传入的数据为201802,这样的数据,我们需要把这个最后的月份获取到,插入到对应的月份中的下标。
month-1是因为数组下标为0开头,后台获得的数据是1开头。
后台sql:
select d.CHECK_YEAR as year, d.YIXUANZEPROJECTS_NAME as name, count(*) as value from f_swyt_view_bzh_plan d
where d.COALMINE_CODE = #{coalMineCode}
and CHECK_TYPE = #{checkType}
and d.CHECK_YEAR <![CDATA[>]]>#{startTime}
and d.CHECK_YEAR <![CDATA[<]]>#{endTime}
group by d.YIXUANZEPROJECTS_NAME;
数据库显示:
后台Controller:
JSONObject jsonObject = new JSONObject();
List<Map> list = iThreeInOneInfoAqschbzfxService.aqscbzhtjfxQsfxList(startTime,endTime,coalMineCode,checkType);
jsonObject.put("list",list);
return jsonObject;
以上四种Echarts图都是在data部分进行将后台获取的数据添加进去。