Echarts 柱形图 时间横轴的动态生成和数据的动态生成
2016-05-21 21:12
477 查看
最近在项目里做一个数据统计的模块,当时自己选中的JfreeChart,自己对这个其实也不是很熟悉,做完了之后生成的图片看着好丑,而且很模糊。后来同事向我推荐了Echarts ,这是在用Echarts 的时候的一点心得,防止以后自己再遇到这样的问题忘记了。本人新手,还请各位多多指教
首先,当然是引入JS文件,这个就跳过了。接着就是JSP页面:
<div id="pieChart" style="height: 400px;width:1200px;"></div> //这里需要给这个div 设置height和width,不然后面生成图片会报错
然后是JS:
我将生成图片的js改成了如下的一个方法,然后只要在这个方法中传入参数就可以实现动态地生成柱形图了:
方法如下:
//生成图片的方法
function makePicture(result,others,show,upload,instal,active,unload){
option = {
tooltip : {
trigger: 'axis',
axisPointer : { // 坐标轴指示器,坐标轴触发有效
type : 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
legend: {
data:['获取广告','展示','下载','安装','激活','卸载']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis : [
{
type : 'category',
data:result //待传入的参数result ,此为时间的横坐标,其实也是一个数组
}
],
yAxis : [
{
type : 'value'
}
],
series : [
{
name:'获取广告',
type:'bar',
data:others //待传入的参数others
},
{
name:'展示',
type:'bar',
stack: '广告',
data:show
//待传入的参数show
},
{
name:'下载',
type:'bar',
data:upload //待传入的参数others
},
{
name:'安装',
type:'bar',
data:instal //待传入的参数instal
},
{
name:'激活',
type:'bar',
data:active //待传入的参数others
},
{
name:'卸载',
type:'bar',
data:unload //待传入的参数unload
},
]
};
myChart.clear();
//此处是将前一次生成的图的数据清除,不加这句的话,前一次的图的数据可能在下一次生成图的时候仍然会存在图上
myChart.setOption(option);
}
传入参数之前,当然,我们需要准备得到的数据:
通过ajax,得到后台传过来的json,然后得到那些要传入的参数的值:(这些参数都是数组)
//柱形图的数据准备
var result= [];
var others = [];
var show = [];
var upload = [];
var instal = [];
var active = [];
var unload = [];
我得到的json为resultCount;
然后将resultCount的值传给以上的数组:
for(var i=0;i<resultCount.length;i++){
result.push(resultCount[i].result);
others.push(resultCount[i].others);
show.push(resultCount[i].show);
upload.push(resultCount[i].upload);
instal.push(resultCount[i].instal);
active.push(resultCount[i].active);
unload.push(resultCount[i].unload);
}
这样,我们要传入方法的参数就都有数据了,准备工作做完了,现在只要最后几步,就可以生成图了:
1. var myChart = echarts.init(document.getElementById('pieChart')); /根据div的ID来实现echarts初始化
2.在生成图的方法中塞入有数据的参数就可以了
makePicture(result3,others,show,upload,instal,active,unload)
效果如下:
首先,当然是引入JS文件,这个就跳过了。接着就是JSP页面:
<div id="pieChart" style="height: 400px;width:1200px;"></div> //这里需要给这个div 设置height和width,不然后面生成图片会报错
然后是JS:
我将生成图片的js改成了如下的一个方法,然后只要在这个方法中传入参数就可以实现动态地生成柱形图了:
方法如下:
//生成图片的方法
function makePicture(result,others,show,upload,instal,active,unload){
option = {
tooltip : {
trigger: 'axis',
axisPointer : { // 坐标轴指示器,坐标轴触发有效
type : 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
legend: {
data:['获取广告','展示','下载','安装','激活','卸载']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis : [
{
type : 'category',
data:result //待传入的参数result ,此为时间的横坐标,其实也是一个数组
}
],
yAxis : [
{
type : 'value'
}
],
series : [
{
name:'获取广告',
type:'bar',
data:others //待传入的参数others
},
{
name:'展示',
type:'bar',
stack: '广告',
data:show
//待传入的参数show
},
{
name:'下载',
type:'bar',
data:upload //待传入的参数others
},
{
name:'安装',
type:'bar',
data:instal //待传入的参数instal
},
{
name:'激活',
type:'bar',
data:active //待传入的参数others
},
{
name:'卸载',
type:'bar',
data:unload //待传入的参数unload
},
]
};
myChart.clear();
//此处是将前一次生成的图的数据清除,不加这句的话,前一次的图的数据可能在下一次生成图的时候仍然会存在图上
myChart.setOption(option);
}
传入参数之前,当然,我们需要准备得到的数据:
通过ajax,得到后台传过来的json,然后得到那些要传入的参数的值:(这些参数都是数组)
//柱形图的数据准备
var result= [];
var others = [];
var show = [];
var upload = [];
var instal = [];
var active = [];
var unload = [];
我得到的json为resultCount;
然后将resultCount的值传给以上的数组:
for(var i=0;i<resultCount.length;i++){
result.push(resultCount[i].result);
others.push(resultCount[i].others);
show.push(resultCount[i].show);
upload.push(resultCount[i].upload);
instal.push(resultCount[i].instal);
active.push(resultCount[i].active);
unload.push(resultCount[i].unload);
}
这样,我们要传入方法的参数就都有数据了,准备工作做完了,现在只要最后几步,就可以生成图了:
1. var myChart = echarts.init(document.getElementById('pieChart')); /根据div的ID来实现echarts初始化
2.在生成图的方法中塞入有数据的参数就可以了
makePicture(result3,others,show,upload,instal,active,unload)
效果如下:
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享