天天看點

ssh結合echarts做圖表展示

在日常的開發中,我們常常需要使用圖表對資料進行展示,在這裡作者使用百度的開源圖表echarts動态的展示資料。

看過echarts的API都知道,要想使用某種類型的圖表展示資料,必須封裝好一個JSON對象傳回給前台做相應的處理。在這裡推薦一個echart對應的實體依賴。在pom.xml中引入

<!-- ECharts的JAVA類庫 -->
        <!-- 項目位址:https://github.com/abel533/ECharts -->
		<dependency>
			<groupId>com.github.abel533</groupId>
			<artifactId>ECharts</artifactId>
			<version>3.0.0.2</version>
		</dependency>
           

然後在controller封裝一個echarts所需的option傳回給前端,在這裡從資料庫的提取的過程部分的代碼我就不寫了。資料庫就簡單的兩列屬性【年份、金額】。在這裡貼出代碼,相信很多小夥伴還是明白滴,不明白的可以留言哦,我看到會一一回複的。

private void setData(){
        yearList = new ArrayList<>();
        amountList = new ArrayList<>();
        List<Gdp> gdpList = gdpService.selectList(new EntityWrapper<Gdp>());
        for (Gdp gdp:gdpList) {
            yearList.add(gdp.getYear());
            amountList.add(gdp.getAmount());
        }
    }

    /**
     * 柱狀圖
     */
    @RequestMapping("/bar_chart")
    @ResponseBody
    public String barChart(){
        setData();

        Option option = new Option();
        option.title().text("中華人民共和國國内生産總值(GDP)").subtext("純屬虛構");
        option.tooltip().trigger(Trigger.axis);
        option.legend("萬億元");
        option.toolbox().show(true).feature(Tool.mark, Tool.dataView, 
new MagicType(Magic.line, Magic.bar).show(true), Tool.restore, Tool.saveAsImage);
        option.calculable(true);
        option.xAxis(new CategoryAxis().data(yearList.toArray()));
        option.yAxis(new ValueAxis());

        Bar bar = new Bar("萬億元");
        bar.data(amountList.toArray());
        bar.markPoint().data(new PointData().type(MarkType.max).name("最大值"), 
new PointData().type(MarkType.min).name("最小值"));
        bar.markLine().data(new PointData().type(MarkType.average).name("平均值"));

        option.series(bar);
        return JSON.toJSONString(option);
    }
           

然後前端發起ajax請求,擷取option對象并顯示。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<html>
<head>
    <title>柱狀圖</title>
    <style>*{ margin:0} html,body{ height:100%} 
    .wrapper{ min-height:100%; height:auto !important; height:100%; margin:0 auto -155px} 
    .footer,.push{ height:155px} 
    table.gridtable{ font-family:verdana,arial,sans-serif; font-size:11px; 
        color:#333; border-width:1px; border-color:#666; 
        border-collapse:collapse; margin:5px auto} 
    table.gridtable th{ border-width:1px; padding:8px; border-style:solid; 
        border-color:#666; background-color:#dedede} 
    table.gridtable td{ border-width:1px; padding:8px; border-style:solid; 
        border-color:#666; background-color:#fff} 
    .middle{ text-align:center; margin:0 auto; width:90%; height:auto} 
    .info{ font-size:12px; text-align:center; line-height:20px; padding:40px} 
    .info a{ margin:0 10px; text-decoration:none; color:green}</style>
    <script type="text/javascript" src="resources/jquery/jquery-2.2.3.min.js"></script>
    <!-- ECharts單檔案引入 -->
    <script src="${ctx}/resources/js/echarts-all-3.js"></script>
    <!-- 修改主題 -->
    <script src="${ctx}/resources/js/macarons.js"></script>

</head>
<body>
    <div id="main" style="height:400px"></div>
    <script>
        window.onload = function(){
            $.ajax({
                type: "post",
                url: "${ctx}/gdp/bar_chart",
                dataType: "json",
                async: false,
                success: function (data) {
                    var option = eval("("+data+")");
                    // theme 來源于 macarons.js
                    var myChart = echarts.init(document.getElementById('main'),theme);
                    myChart.setOption(option);
                }
            })
        }
    </script>
</body>
</html>
           

版權聲明:本文為CSDN部落客「weixin_34290000」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34290000/article/details/92306474

繼續閱讀