龙空技术网

java + echart (多条折线图,饼状图,柱状图)

魔都小老表vlog 303

前言:

现在你们对“jqueryhashmap”可能比较关心,姐妹们都需要知道一些“jqueryhashmap”的相关资讯。那么小编在网摘上汇集了一些有关“jqueryhashmap””的相关内容,希望同学们能喜欢,大家一起来学习一下吧!

echart用于统计使用,看着很美观且数据描述的很清晰。所以昨天第一次使用,出现了很多问题。

1.多条折线图 折线:line

直接贴代码:后台

public Map<String,Object> pointUselessAnalyze(Integer orgId){

List<Record> records = null;

List<String> legend = new ArrayList<>();//放置折线图每条信息的颜色

List<String> echarts1 = new ArrayList<>();//折线1

List<String> echarts2 = new ArrayList<>();//折线2

List<String> echarts3 = new ArrayList<>();//折线3

List<EchartsEntity> echarts = new ArrayList<>();//EchartsEntity对象中 三个属性:String,String,List -> 折线注释,折线type,数据

String[] xAxis = null;//x轴

if (orgId != null && orgId > 0) {

String sql = "xxx";//mysql语句

records = Db.use().find(sql);//返回结果

}

if (records != null && records.size() > 0) {

xAxis = new String[records.size()];//x轴的长度

for(int i = 0; i < records.size();i++){//循环mysql结果

xAxis[i] = records.get(i).getStr("time");//我是以时间作为x轴

echarts1.add(records.get(i).getStr("a"));//折线1

echarts2.add(records.get(i).getStr("b"));//折线2

echarts3.add(records.get(i).getStr("c"));//折线3

}

}

EchartsEntity entity1 = new EchartsEntity("a","line",echarts1);

EchartsEntity entity2 = new EchartsEntity("b","line",echarts2);

EchartsEntity entity3 = new EchartsEntity("c","line",echarts3);

echarts.add(entity1);

echarts.add(entity2);

echarts.add(entity3);

legend.add("a");

legend.add("b");

legend.add("c");

Map<String,Object> ret=new HashMap<>();

ret.put("xAxis", xAxis);//x轴信息

ret.put("series", echarts);//折线内容

ret.put("legend", legend);//折线颜色和折线颜色所代表的的信息

return ret;//返回结果Map<String,Object>

}

EchartsEntity entity1 = new EchartsEntity("a","line",echarts1);

EchartsEntity entity2 = new EchartsEntity("b","line",echarts2);

EchartsEntity entity3 = new EchartsEntity("c","line",echarts3);

echarts.add(entity1);

echarts.add(entity2);

echarts.add(entity3);

legend.add("a");

legend.add("b");

legend.add("c");

Map<String,Object> ret=new HashMap<>();

ret.put("xAxis", xAxis);//x轴信息

ret.put("series", echarts);//折线内容

ret.put("legend", legend);//折线颜色和折线颜色所代表的的信息

return ret;//返回结果Map<String,Object>

}

前台:

<div id='line' style="height: 400px; top:10px"></div>

<script type="text/javascript">

var myLine = echarts.init(document.getElementById('line'));

var lineOption = {

title : {

text : 'aa',//标题

subtext : ''//副标题

},

tooltip : {

trigger : 'axis' //item 点在哪条线上显示哪条线上的数据,axis点在哪个坐标点上显示对于点上所有数据

},

legend : {

data : []

},

toolbox : {

show : true,

orient : 'vertical',

x : 'right',

y : 'center',

feature : {

mark : {

show : true

},

dataView : {

show : true,

readOnly : false

},

magicType : {

show : true,

type : [ 'line', 'bar' ]

},

restore : {

show : true

},

saveAsImage : {

show : true,

name : '折线图'//保存的图片名次

}

}

},

calculable : true,

xAxis : [ {

type : 'category',

boundaryGap : [ 0, 0.01 ],

name : '时间',

data : [ '' ],

axisLabel : {

interval : 0,//横轴信息全部显示

rotate : -30,//-30度角倾斜显示

}

} ],

yAxis : [ {

type : 'value',

axisLabel : {

formatter : '{value} '

}

} ],

grid : {

x : 30,//设置该图形与对应div的左边距

y : 30,//设置该图形与对应div的上边距

x2 : 50,//设置该图形与对应div的右边距

y2 : 50

//设置该图形与对应div的下边距

},

series : []

};

myLine.setOption(lineOption);

var ajaxLine = function() {

$.ajax({

url : 'url地址',

success : function(responseText) {

//请求成功时处理

lineOption.legend.data = responseText.legend;

lineOption.xAxis[0].data = responseText.xAxis;//x轴

var serieslist = responseText.series;

for (var i = 0; i < serieslist.length; i++) {//循环放入数据

lineOption.series[i] = serieslist[i];

}

myLine.setOption(lineOption, true);

},

complete : function() {

//请求完成的处理

},

error : function() {

//请求出错处理

alert("加载失败");

}

})

}

加上效果图:多条折线

2.饼状图 饼图:pie

后台:

public Map<String,Object> pointOperatorCountAnalyze(Integer orgId){

List<Record> records = null;

String legend[] = {"a","b","c"};

String time = "";

List<Map<String, String>> listMap = new ArrayList<>();

if (orgId != null && orgId > 0) {

String sql = "xxx";

records = Db.use().find(sql);

}

if (records != null) {

for(int i = 0 ;i<records.size();i++){

time = records.get(i).getStr("time");

Map<String, String> map1 = new HashMap<>();

map1.put("name","a");

map1.put("value", records.get(i).getStr("a"));

Map<String, String> map2 = new HashMap<>();

map2.put("name","b");

map2.put("value", records.get(i).getStr("b"));

Map<String, String> map3 = new HashMap<>();

map3.put("name","c");

map3.put("value", records.get(i).getStr("c"));

listMap.add(map1);

listMap.add(map2);

listMap.add(map3);

}

}

Map<String,Object> ret=new HashMap<>();

ret.put("series", listMap);

ret.put("legend", legend);

ret.put("time", time);//我用于作为副标题

return ret;

}

前台:

var myPie = echarts.init(document.getElementById('pie'));

var optionPie = {

title : {

text : 'pie',

x : 'center',

subtext : ''

},

subtextStyle: {

color: 'black' , // 副标题文字颜色

fontSize: 20

},

tooltip : {

trigger : 'item',

formatter : "{a} <br/>{b} : {c} ({d}%)"

},

legend : {

orient : 'vertical',

x : 'left',

data : []

},

toolbox : {

show : true,

feature : {

mark : {

show : true

},

dataView : {

show : true,

readOnly : false

},

magicType : {

show : true,

type : [ 'pie', 'funnel' ],

option : {

funnel : {

x : '25%',

width : '50%',

funnelAlign : 'left',

max : 1548

}

}

},

restore : {

show : true

},

saveAsImage : {

show : true

}

}

},

calculable : true,

series : [ {

name : '管理员角色',

type : 'pie',

radius : '55%',

center : [ '60%', '60%' ],

data : []

} ]

};

myPie.setOption(optionPie);

var ajaxPie = function() {

$.ajax({

url : 'url地址',

success : function(responseText) {

optionPie.title.subtext = responseText.time;

optionPie.legend.data = responseText.legend;

var seriesData = responseText.series;

var datas = [];//循环内容list,我返回的结果为list<Map>

for(var i = 0 ;i<seriesData.length;i++){//饼状图内容需要的格式为 {name:a,value:1}

datas.push({

name : seriesData[i].name,

value : seriesData[i].value

});

}

optionPie.series[0].data = datas;

myPie.setOption(optionPie, true);

},

complete : function() {

//请求完成的处理

},

error : function() {

//请求出错处理

alert("加载失败");

}

})

}

饼状图:

3.柱状图 柱状图:bar(和折线图类似)

后台:

public Map<String,Object> pointOperatorLoginAnalyze(Integer orgId){

List<Record> records = null;

List<String> legend = new ArrayList<>();

List<String> echarts1 = new ArrayList<>();

List<EchartsEntity> echarts = new ArrayList<>();

String[] xAxis = null;

if (orgId != null && orgId > 0) {

String sql = "xx";

records = Db.use().find(sql);

}

if (records != null && records.size() > 0) {

xAxis = new String[records.size()];

for(int i = 0; i < records.size();i++){

xAxis[i] = records.get(i).getStr("time");

echarts1.add(records.get(i).getStr("loginCount"));

}

}

EchartsEntity entity1 = new EchartsEntity("a","bar",echarts1);

echarts.add(entity1);

legend.add("a");

Map<String,Object> ret=new HashMap<>();

ret.put("xAxis", xAxis);

ret.put("series", echarts);

ret.put("legend", legend);

return ret;

}

EchartsEntity entity1 = new EchartsEntity("a","bar",echarts1);

echarts.add(entity1);

legend.add("a");

Map<String,Object> ret=new HashMap<>();

ret.put("xAxis", xAxis);

ret.put("series", echarts);

ret.put("legend", legend);

return ret;

}

前台:

var myBar = echarts.init(document.getElementById('bar'));

var optionBar = {

title : {

text : 'a',

subtext : ''

},

tooltip : {

trigger : 'axis' //item 点在哪条线上显示哪条线上的数据,axis点在哪个坐标点上显示对于点上所有数据

},

legend : {

data : []

},

toolbox: {

show : true,

feature : {

dataView : {show: true, readOnly: false},

magicType : {show: true, type: ['line', 'bar']},

restore : {show: true},

saveAsImage : {show: true}

}

},

calculable : true,

xAxis : [ {

type : 'category',

name : '时间',

data : [ '' ],

axisLabel : {

interval : 0,//横轴信息全部显示

rotate : -30,//-30度角倾斜显示

}

} ],

yAxis : [{

type : 'value'

}],

series : []

};

myBar.setOption(optionBar);

var ajaxBar = function() {

$.ajax({

url : 'xx',

success : function(responseText) {

console.log(responseText);

//请求成功时处理

optionBar.legend.data = responseText.legend;

optionBar.xAxis[0].data = responseText.xAxis;

var serieslist = responseText.series;

for (var i = 0; i < serieslist.length; i++) {

optionBar.series[i] = serieslist[i];

}

myBar.setOption(optionBar, true);

},

complete : function() {

//请求完成的处理

},

error : function() {

//请求出错处理

alert("加载失败");

}

})

}

bar']},

restore : {show: true},

saveAsImage : {show: true}

}

},

calculable : true,

xAxis : [ {

type : 'category',

name : '时间',

data : [ '' ],

axisLabel : {

interval : 0,//横轴信息全部显示

rotate : -30,//-30度角倾斜显示

}

} ],

yAxis : [{

type : 'value'

}],

series : []

};

myBar.setOption(optionBar);

var ajaxBar = function() {

$.ajax({

url : 'xx',

success : function(responseText) {

console.log(responseText);

//请求成功时处理

optionBar.legend.data = responseText.legend;

optionBar.xAxis[0].data = responseText.xAxis;

var serieslist = responseText.series;

for (var i = 0; i < serieslist.length; i++) {

optionBar.series[i] = serieslist[i];

}

myBar.setOption(optionBar, true);

},

complete : function() {

//请求完成的处理

},

error : function() {

//请求出错处理

alert("加载失败");

}

})

}

柱状图:

因为我只有一个数据,所以柱状图显示有点夸张。

这几天又写了几组echart图,发现一个问题,就是填写数据;

在前端拼接数据,例如:

var xAxis = '数据1','数据2','数据3','数据4','数据5';

var option.xAxis = '['+xAxis+']';

这种是不能显示在图表上的;显示数据可能是这种结果 '数 据 1''数 据 2''数 据 3''数 据 4''数 据 5' 结果会自动空格

最好的解决方法就是在后台组装一个string[]传到前端赋值。

标签: #jqueryhashmap