报表绘图插件echarts使用教程
来源:互联网 发布:vm虚拟机装mac 编辑:程序博客网 时间:2024/06/05 04:24
报表在实际项目中,应该属于必不可少的部分,针对如何显示更直观,有的是用表格,有的使用绘图的形式,给客户提供出平台的一些收益情况。对于绘图这类的插件,今天我们是使用的是echarts插件,进行讲解。可以通过官网http://echarts.baidu.com/查看示例和下载对应的js文件。
从官网可以看到报表显示的形式是多种多样的,如何显示,其实做法都是差不多的,我们只要从后端传对应的x,y粥的数据到前端进行赋值就可以了。
现在我们要做这样的一个功能,从后台传输数据到前台,初始化echarts对应的x,y轴的数据进行显示。显示完之后可以进行不同y轴数据的切换,比如x-y对应的(时间-订单数/微信支付金额/现金支付金额)等等。
1:首先引入js
<script src="${ctx}/echarts-2.2.7/echarts.js"></script>
2:定义数据保存后台传过来的数据
<script type="text/javascript">
var xdata;
var ydata;
var dateArray;
var orderCount;
var orderAmount;
var purseAmount;
var wxpayAmount;
var alipayAmount;
var unionpayAmount;
$(document).ready(function() {
//初始化加载echarts数据为前
loadEcharts("0");
});
function loadEcharts(datas){
$.ajax({
type: "POST",
url: "${ctx}/echatrts/hkorderstats/hkOrderStats/changeEcharts?refDate="+datas,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
//存储数据
dateArray= data.dateArray;
orderCount=data.orderCountArray;
orderAmount= data.orderAmountArray;
purseAmount= data.purseAmountArray;
wxpayAmount= data.wxpayAmountArray;
alipayAmount= data.alipayAmountArray;
unionpayAmount= data.unionpayAmountArray;
//使用xdata,ydata传参
xdata=dateArray;
ydata=orderCount;
initEcharts(xdata,ydata);
},
error: function (msg) {
/* alert(msg); */
}
});
}
function initEcharts(xdata,ydata){
var myChart = echarts.init(document.getElementById('main'));
option = {
title: {
text: '对数轴示例',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}'
},
legend: {
left: 'left',
data: ['2的指数', '3的指数']
},
xAxis: {
type: 'category',
name: 'x',
splitLine: {show: false},
data: xdata,
axisLabel :{ //显示所有数据
interval:0
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
yAxis: {
type: 'log',
name: 'y'
},
series: [
{
name: '1/2的指数',
type: 'line',
data:ydata
}
]
};
// 使用指定的配置项和数据显示图表。
myChart.setOption(option);
}
</script>
3:html
<!-- tab按钮 -->
<div style="margin-bottom: 30px;margin-top: 30px;" id="btn_div">
<a class="btn btn-primary" style="margin-right: 5px;" onclick="refreshData(1)">订单数</a><a id="id2" onclick="refreshData(2)" class="btn btn-primary" style="margin-right: 5px;">订单金额</a>
<a class="btn btn-primary" style="margin-right: 5px;" onclick="refreshData(3)">现金</a><a class="btn btn-primary" style="margin-right: 5px;" onclick="refreshData(4)">微信支付</a>
<a class="btn btn-primary" style="margin-right: 5px;" onclick="refreshData(5)">支付宝支付</a><a class="btn btn-primary" onclick="refreshData(6)" style="margin-right: 5px;">银联支付</a>
</div>
<!-- ajax查询数轴 -->
<div>
<label style="color: green;font-size: 16px;">选择时间</label>
<input id="refDate" type="text" maxlength="20" class="laydate-icon form-control layer-date input-sm"/>
<%-- value="<fmt:formatDate value="${hkOrderStats.refDate}" pattern="yyyy-MM"/>" --%>
</div>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 100%;height:500px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
option = {
title: {
text: '对数轴示例',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b} : {c}'
},
legend: {
left: 'left',
data: ['2的指数', '3的指数']
},
xAxis: {
type: 'category',
name: 'x',
splitLine: {show: false},
data: xdata,
axisLabel :{
interval:0
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
yAxis: {
type: 'log',
name: 'y'
},
series: [
{
name: '1/2的指数',
type: 'line',
data:ydata
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
function refreshData(type){
var myChart = echarts.init(document.getElementById('main'));
if(type==1){
ydata=orderCount;
}
if(type==2){
ydata=orderAmount;
}
if(type==3){
ydata=wxpayAmount;
}
if(type==4){
ydata=wxpayAmount;
}
if(type==5){
ydata=alipayAmount;
}
if(type==6){
ydata=unionpayAmount;
}
initEcharts(xdata,ydata);
//更新数据
/* var option = myChart.getOption();
option.series[0].data =ydata;
myChart.setOption(option); */
}
</script>
4:controller
/**
* 异步加载折线图信息
*/
@RequiresPermissions("user")
@ResponseBody
@RequestMapping(value ="changeEcharts")
public Map<String,Object> changgeEcharts(@RequestParam(value="refDate",required=false) String refDate, HttpServletResponse response,Model model, HttpServletRequest request) {
Map<String, Object> map=Maps.newHashMap();
HkOrderStats entity=new HkOrderStats();
if("0".equals(refDate)){
entity.setRefDate(DateUtils.formatDate(new Date(), "yyyy-MM"));
}else{
entity.setRefDate(refDate);
}
List<HkOrderStats> list=hkOrderStatsService.findEcharts(entity);
if(!list.isEmpty()){
Integer orderCountArray[]=new Integer[list.size()];
Double orderAmountArray[]=new Double[list.size()];
Double purseAmountArray[]=new Double[list.size()];
Double wxpayAmountArray[]=new Double[list.size()];
Double alipayAmountArray[]=new Double[list.size()];
Double unionpayAmountArray[]=new Double[list.size()];
String dateArray[]=new String[list.size()];
for(int i=0;i<list.size();i++){
HkOrderStats h=list.get(i);
orderCountArray[i]=h.getOrderCount();
orderAmountArray[i]=h.getOrderAmount();
purseAmountArray[i]=h.getPurseAmount();
wxpayAmountArray[i]=h.getWxpayAmount();
alipayAmountArray[i]=h.getAlipayAmount();
unionpayAmountArray[i]=h.getUnionpayAmount();
dateArray[i]=h.getRefDate();
}
map.put("dateArray",dateArray);
map.put("orderCountArray", orderCountArray);
map.put("orderAmountArray", orderAmountArray);
map.put("purseAmountArray",purseAmountArray);
map.put("wxpayAmountArray", wxpayAmountArray);
map.put("alipayAmountArray",alipayAmountArray);
map.put("unionpayAmountArray", unionpayAmountArray);
}
model.addAttribute("hkOrderStatsList", list);
return map;
}
- 报表绘图插件echarts使用教程
- Web前端echarts插件的基础使用,创建报表组件。
- echarts报表javascript插件简介
- canvas绘图 echarts 基本使用
- Echarts插件使用总结
- Echarts插件使用
- 项目使用插件---echarts
- js实现图形报表 ECharts插件
- echarts使用教程1
- 【ECharts】百度图表插件ECharts使用
- echarts绘图
- echarts图表插件的使用
- 集算报表如何使用Echarts
- 使用SSM+ajax+echarts制作报表图
- 图表插件ECharts的上手教程
- Echarts教程--java使用demo
- 开源库Magicodes.ECharts使用教程
- ECharts官方教程(三)【在webpack中使用 ECharts】
- [HDU2457]DNA repair-AC自动机
- JS封装的含义及通俗比喻
- hdu 1484 Basic wall maze bfs + 输出路径
- (int*)(&a+1)
- MacOS Sierra10.12.4编译Android7.1.1源码必须跳的坑
- 报表绘图插件echarts使用教程
- ajax data的参数
- 【unity实用技能】unity编辑器工具之加载预制(Prefab)和场景(Scene)
- A Sample Socket-Based Activation
- 展示一款创视微前年开发的互联网家庭k歌硬件MC-1
- 欢迎使用CSDN-markdown编辑器
- 密集芯片的焊接技巧:从LQFP64说起
- 多层布局禁止底层获取点击事件
- 多线程之线程同步