Echarts-java後端封裝option--(一)柱狀圖/折線圖 測試用例

最近由於要使用到百度的echarts來做圖表的展示,近些天一直在學習echarts的使用,說實話百度echarts的官方文檔對於前端通過js來完成圖表的展示,確實有很方便之處,但是對於某些數據的處理和賦值都在前端完成確實有些繁瑣,國人對於這方面矢志不渝,在後端通過封裝好option對象然後轉成json傳到前端 極大的簡化了前端對option的操作。這裏就簡單的寫一些後端對option對象的封裝。

首先引入 echarts的jar包依賴和js腳本

這裏後端使用 ECharts-2.2.7.jar
下載地址 http://mvnrepository.com/artifact/com.github.abel533/ECharts
前端使用 echart.js
下載地址 http://echarts.baidu.com/echarts2/
前後端都是使用2.X版本 echarts對2.x支持比較全面

注意:echarts的後端封裝是針對於Echarts2.x相契合的 對於3.x之後沒有進行更新 所以如果使用盡量安裝2.x的官方文檔進行相應的option對象的後臺封裝 !!切記

依賴引入完之後就可以開始寫代碼了


1.前後端實現 – 柱狀圖表


後端首先進行option對象的封裝

代碼如下:

/**
*    柱狀圖------圖表測試 Controller 
*
*/
@Controller
@RequestMapping("/echart")
public class EchartsController {


/**
     * 柱狀圖 圖表option 的封裝  測試用例--路段人流數據
     * @return
     */
    @RequestMapping(value = "/bar",method = RequestMethod.POST)
    @ResponseBody()
    public String bar(){

        //由於是測試用例首先聲明  1.標題   2.x軸代表的路段  3.路段數據
        //標題
        String title = "路段人流數據統計";
        //路段
        String[] roads = {"長江路","長河路","長安路","西湖路","建安路"};
        //路段數據
        int[] datas = {123,153,643,234,453};


        //####開始構建option對象 ######
        //這裏先做最簡單的測試用用例 其他渲染的屬性 大家可以在瞭解之後自行測試使用
        //1.創建option對象    有兩種方式 一種是直接創建option但是在封裝好option之後要使用json轉換工具進行格式的轉換
        //這裏使用第二種方式直接構建GsonOption 通過toString方法可轉換成json
        Option option = new GsonOption();

        //2.設置標題  可選
        option.title().text(title).x("left");//將標題傳入即可 並且支持鏈式調用 設置顯示位置 居左

        //3.設置圖例  可選
        option.legend("路段數據");
        //4.設置工具欄  可選
        option.toolbox().show(true).feature(Tool.mark,
                Tool.magicType); //設置可標記

        //5.設置顯示工具
        option.tooltip().show(true).
                formatter("{a}</br>{b}:{c}");//設置顯示的格式 當鼠標放到柱狀圖上時的顯示格式

        //6.設置x軸數據
        CategoryAxis categoryAxis = new CategoryAxis();
        categoryAxis.data(roads);
        option.xAxis(categoryAxis);

        //7.設置y軸 這裏不給指定數據  自動調整
        ValueAxis valueAxis = new ValueAxis();
        option.yAxis(valueAxis);

        //8.填充柱狀圖數據
        Bar bar = new Bar();
        bar.name("路段數據");
        for(int i = 0; i < roads.length; i++){
            Map<String,Object> map = new HashMap<>();
            map.put("value",datas[i]);
            map.put("name",roads[i]);
            bar.data(map);//指定路段裝入指定數據
        }
        //裝入數據表中
        option.series(bar);
        //option進行json格式處理
        String result = option.toString();
        return result ;
    }

}

其中特別要注意的是option最後轉換成json格式的數據

如果使用Option opiton = new Option()來構建的option對象 在傳入前端時可使用Goolge的Gson轉換jar進行json的轉換
例如 new Gson().toJosn(option);
如果使用的是 Option option = new GsonOption(); 來構建的對象
可直接對option進行toString()即可 GsonOption對toString進行了重寫;

傳入前端的數據用eval()方法對json字符串進行解析並加上()後可直接使用

前端代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
   //一定要指定div的高度和寬度以便能撐起圖標
    <div id="echart"style="height:300px;width:600px;>

    </div>


<script src="/static/jquery.min.js"></script>
<script src="/static/echarts.min.js"></script>
<script>
    //圖表的初始化
    var echarts = echarts.init(document.getElementById('echart');

    initEcharts();
    function initEcharts(){
         echarts.clear();
         echarts.showLoading({text: '正在努力的讀取數據中...'});
        $.ajax({
            url:"/echarts/bar",
            type:"post",
            success:function(data){
                var option = eval("("+data+")");
                echarts.setOption(option);
                echarts.hideLoading();

            }

        })

    }

</script>

顯示圖表如下:
這裏寫圖片描述


解釋一下圖標

1.代表標題並且居左

2.代表圖例 在填充內容是bar的name應與之對應

3.代表工具欄

4.代表顯示工具格式如上 – –:–

5.代表x軸路段名稱


折線圖測試


直接上代碼:
java封裝option代碼:

 /**
     * 折線圖的 測試用例
     * @return
     */
    @RequestMapping(value = "/line",method =RequestMethod.POST,
    produces = {"application/text;charset=UTF-8"})
    @ResponseBody()
    public String line(){
        String title = "斷舍離";
        String[] types = {"斷","舍","離"};
        int[][] datas = {{13,456,72,68,242,445,81},
                        {123,46,752,78,22,45,841},
                        {123,456,72,778,222,45,841}};
        String[] weeks ={"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};

        Option option = new GsonOption();

        option.title().text(title).x("left");
        option.legend().data(types).x("center");

        option.tooltip().show(true);
        option.toolbox().show(true).feature(Tool.magicType,Tool.dataZoom);

        CategoryAxis categoryAxis = new CategoryAxis();

        categoryAxis.data(weeks);
        option.xAxis(categoryAxis);
        option.yAxis(new ValueAxis());

        //循環爲了獲取多條折線數據
       for(int i =0;i< types.length;i++){

           //創建line對象
           Line line = new Line();
           String type = types[i];
           line.name(type);
           for(int j = 0; j<weeks.length;j++){

               line.data(datas[i][j]);

           }
            option.series(line);
       }
        return option.toString();
    }

前端代碼:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
   //一定要指定div的高度和寬度以便能撐起圖標
    <div id="echart"style="height:300px;width:600px;>

    </div>


<script src="/static/jquery.min.js"></script>
<script src="/static/echarts.min.js"></script>
<script>
    //圖表的初始化
    var echarts = echarts.init(document.getElementById('echart');

    initEcharts();
    function initEcharts(){
         echarts.clear();
         echarts.showLoading({text: '正在努力的讀取數據中...'});
        $.ajax({
            url:"/echarts/line",
            type:"post",
            success:function(data){
            //對傳過來的json字符串轉化爲json對象 等同於 JSON.parse(data);  
                var option = eval("("+data+")");
                echarts.setOption(option);
                echarts.hideLoading();

            }

        })

    }

</script>

結果如下圖:

這裏寫圖片描述

下一篇 Echarts-java後端封裝option —(二)餅圖測試用例

如有錯誤還請見諒 ,如有能幫助到你的地方 榮幸之至

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章