echarts+java封装类实现图表的实例

介绍了一个基于.net封装的echarts类,今天分享一下:echarts+java封装类实现图表的demo。

1、echarts封装类:

package com.ffcs.wlan.model;
import java.util.ArrayList;
import java.util.List;
public class EchartData {
    public List<String> legend = new ArrayList<String>();//数据分组
    public List<String> category = new ArrayList<String>();//横坐标
    public List<Series> series = new ArrayList<Series>();//纵坐标
    public EchartData(List<String> legendList, List<String> categoryList, List<Series> seriesList) {
        super();
        this.legend = legendList;
        this.category = categoryList;
        this.series = seriesList;
    }
}

package com.ffcs.wlan.model;
import java.util.List;
public class Series  {
    public String name;
    public String type;
    public List<Integer> data;//这里要用int 不能用String 不然前台显示不正常(特别是在做数学运算的时候)
    public Series( String name, String type, List<Integer> data) {
        super();
        this.name = name;
        this.type = type;
        this.data = data;
    }
}

上面是Series 类。

2、控制器实现

package com.ffcs.wlan.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ffcs.wlan.model.EchartData;
import com.ffcs.wlan.model.Series;
@Controller
@RequestMapping("/echarts")
public class EntityController {
    private static final Logger logger = LoggerFactory.getLogger(EntityController.class);
    @RequestMapping("/line_data")
    @ResponseBody
    public EchartData lineData() {
        logger.info("lineData....");
        List<String> legend = new ArrayList<String>(Arrays.asList(new String[]{"最高气温"}));//数据分组
        List<String> category = new ArrayList<String>(Arrays.asList(new String []{"周一","周二","周三","周四","周五","周六","周日"}));//横坐标
        List<Series> series = new ArrayList<Series>();//纵坐标
        series.add(new Series("最高气温", "line",
                        new ArrayList<Integer>(Arrays.asList(
                                21,23,28,26,21,33,44))));
        EchartData data=new EchartData(legend, category, series);
        return data;
    }
    @RequestMapping("/line_page")
    public String linePage() {
        logger.info("linePage....");
        return "report/line";
    }
}

3、jsp页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>line</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/echarts2.0/esl.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style="height:400px"></div>
    <script type="text/javascript" language="javascript">
        var myChart;
        var eCharts;
        require.config({
            paths : {
                'echarts' : '${pageContext.request.contextPath}/js/echarts2.0/echarts' ,
                'echarts/chart/line' : '${pageContext.request.contextPath}/js/echarts2.0/echarts' //需要的组件
            }
        });
        require(
            [ 'echarts',
              'echarts/chart/line'
            ], DrawEChart //异步加载的回调函数绘制图表
        );
        //创建ECharts图表方法
        function DrawEChart(ec) {
            eCharts = ec;
            myChart = eCharts.init(document.getElementById('main'));
            myChart.showLoading({
                text : "图表数据正在努力加载..."
            });
            //定义图表options
            var options = {
                title : {
                    text : "未来一周气温变化",
                    subtext : "纯属虚构",
                    sublink : "http://www.111cn.net"
                },
                tooltip : {
                    trigger : 'axis'
                },
                legend : {
                    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 : [ '1', '2', '3', '4', '5', '6', '7' ]
                } ],
                yAxis : [ {
                    type : 'value',
                    axisLabel : {
                        formatter : '{value} °C'
                    },
                    splitArea : {
                        show : true
                    }
                } ],
                grid : {
                    width : '90%'
                },
                series : [ {
                    name : '最高气温',
                    type : 'line',
                    data : [ 11, 22, 33, 44, 55, 33, 44 ],//必须是Integer类型的,String计算平均值会出错
                    markPoint : {
                        data : [ {
                            type : 'max',
                            name : '最大值'
                        }, {
                            type : 'min',
                            name : '最小值'
                        } ]
                    },
                    markLine : {
                        data : [ {
                            type : 'average',
                            name : '平均值'
                        } ]
                    }
                } ]
            };
            myChart.setOption(options); //先把可选项注入myChart中
            myChart.hideLoading();
            getChartData();//aja<a href="/productdesign/bootstrap-small-manage-system-template-ace.html" class="keylink" title="后台管理模板" target="_blank">后台</a>交互
        }
    </script>
    <script type="text/javascript">
        function getChartData() {
            //获得图表的options对象
            var options = myChart.getOption();
            //通过Ajax获取数据
            $.ajax({
                type : "post",
                async : false, //同步执行
                url : "${pageContext.request.contextPath}/echarts/line_data",
                data : {},
                dataType : "json", //返回数据形式为json
                success : function(result) {
                    if (result) {
                        options.legend.data = result.legend;
                        options.xAxis[0].data = result.category;
                        options.series[0].data = result.series[0].data;
                        myChart.hideLoading();
                        myChart.setOption(options);
                    }
                },
                error : function(errorMsg) {
                    alert("不好意思,大爷,图表请求数据失败啦!");
                    myChart.hideLoading();
                }
            });
        }
    </script>
</body>
</html>

注意路径${pageContext.request.contextPath}!

时间: 2024-09-20 08:02:39

echarts+java封装类实现图表的实例的相关文章

echarts+java+ajax实现动态线状图实例

echarts官方都是静态的例子,没有结合后台代码的例子.本站提供最全的echarts教程和实例.希望对大家有帮助.废话不多说.今天分享一下:echarts+java+ajax实现动态线状图实例. 先看效果图: 1.html代码+JavaScript代码+ajax调用:  代码如下 复制代码 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4

求用“Xamarin”在Android手机做图表的实例?

问题描述 求用"Xamarin"在Android手机做图表的实例,有没有这样的实例可以参考??? 解决方案 解决方案二:有没有图表插件可以使用啊.解决方案三:有没有人知道啊.解决方案四:找java的看有没有这个库,解决方案五:有没有图表插件可以使用啊.解决方案六:我曾经做过图表,自己定义一个类继承view类,重写Draw方法,Draw方法中新建画笔paintPaintmPaintFill=newPaint();mPaintFill.SetStyle(Paint.Style.Fill);

Java中实现文件拷实例

Java中实现文件拷实例 import java.io.*; class copy_file { public static void copyfile(String path1,String path2) throws IOException //使用FileInputStream和FileOutStream { FileInputStream fi=new FileInputStream(path1); FileOutputStream fo=new FileOutputStream(pat

java读取大文件简单实例

 这篇文章主要介绍了java读取大文件简单实例,有需要的朋友可以参考一下 我要从一个文本文件中提有用的数据  文本文件200多MB  是不是可以建一个缓存来把有用的数据一段一段的提出来,请问该怎么做?    JAVA中可以使用内存映射文件来操作大文件.  最大可达2GB.  下面是个简单的示例,更具体的自己看Java API DOCS或相关资料      代码如下: import java.io.*;  import java.nio.*;  import java.nio.channels.*

远程访问-java 连接其它电脑access 实例

问题描述 java 连接其它电脑access 实例 1:首先我通过配置ODBC数据源进行连接: String url="jdbc:odbc:lyjtest"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection(url,"",""); stmt = conn.createStatement(); 第一次是可以连接,但

网络爬虫-用Java来抓取网页实例中HttpClient类的问题

问题描述 用Java来抓取网页实例中HttpClient类的问题 报这么一大堆错误我也是受不了了...... 主要的问题应该是HttpClient类这个东西,在网上查了这个类是httpclient-2.x.jar包的产物,我导入的是httpclient-4.2.2.jar和httpcore-4.2.2.jar包,而这两个新的工具包并不包含HttpClient类,查阅了Java API帮助文档后,自己并没有找到HttpClient类的替代类,而是一堆接口和抽象类,由于是刚开始写这个,所以有点懵.

java代码获取JVM基本信息实例

问题描述 java代码获取JVM基本信息实例 包括虚占用CPU时间,JIT编译器名称,JIT编译总时间,JVM启动参数 解决方案 http://cn-done.iteye.com/blog/2041971 解决方案二: http://cn-done.iteye.com/blog/2041971

关于java RMI分布式程序开发实例

关于java RMI分布式程序开发实例   作者: javaboy2012 Email:yanek@163.com qq:    1046011462   一. 服务器端     接口定义:注意必须继承Remote接口 package com.yanek.rmi.server; import java.rmi.Remote; import java.rmi.RemoteException; import java.util.List; public interface ChannelManage

Java连接Oracle数据库简单实例

       数据库的操作是当前系统开发必不可少的开发部分之一,尤其是在现在的大数据时代,数据库尤为重要.但是你真的懂得Java与数据库是怎么连接的么?        先给大家一个数据库连接的简单实例: package com.java.dbtest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; im