https://blog.csdn.net/echo_1510/article/details/105484848
1 餅圖
1.1 后端-Controller層
傳的是List型數據
/** * 按客戶所在城市統計————餅圖 * @param model * @return */ @RequestMapping("/show") @ResponseBody public List<Echarts> show(Model model) { List<Echarts> echartsList = clientService.getCity(); System.out.println("echartsList:"+echartsList.get(1).getName()); return echartsList; } @RequestMapping("/showCity") public String showCity() { return "showCity"; }
1.2 前端
showCity.html
需要引入
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
<script type="text/javascript"> //基於准備好的dom,初始化echarts實例 var myChart = echarts.init(document.getElementById('main')); myChart.clear(); var names = []; var mydata = []; $.ajax({ method: 'get', url: '/show', dataType: 'json', success: function (datas) { for (var i=0;i<datas.length;i++){ names.push(datas[i].name); mydata[i] = {value: datas[i].value, name: datas[i].name}; } // 指定圖表的配置項和數據 var option = { title: { text: '客戶所在城市統計', left: 'center' }, tooltip: { trigger: 'item', formatter: '{a} <br/>{b} : {c} ({d}%)' }, legend: { orient: 'vertical', left: 'left', data: names }, series: [ { name: '所在城市', type: 'pie', radius: '55%', center: ['50%', '60%'], data: mydata, emphasis: { itemStyle: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }; // 使用剛指定的配置項和數據顯示圖表。 myChart.setOption(option,true); } }); </script>
1.3 關鍵代碼
mydata[i] = {value: datas[i].value, name: datas[i].name};
描述:創建一個數組mydata[],用for循環把后台傳來的List整個放進去(注意格式為“{value:xxx, name:xxx}”),在option里的series中通過“data: mydata”傳入即可。
var names = []; success: function (datas) { for (var i=0;i<datas.length;i++){ names.push(datas[i].name); ... } }
1.4 注意事項
ajax里的url: 'xxx’要與controller中的@RequestMapping(“xxx”)一致,
eg:上述代碼均為/show
須區分ajax所在頁面名與url名,eg: 上述代碼中的“showCity”與“show”
前端通過ajax的“success: function (xxx)”接收后台傳來的數據
1.5 效果展示
2 條形圖
2.1 后端-Controller層
/** * 按客戶所在城市統計————條形圖 * @param model * @return */ @RequestMapping("/showCityBar") public String showCityBar(Model model) { List<Echarts> echartsList = clientService.getCity(); String xcors = ""; String ycors = ""; int size = echartsList.size(); for(int i = 0; i < size-1; i++) { xcors += echartsList.get(i).getName() + ","; ycors += echartsList.get(i).getValue() + ","; } xcors += echartsList.get(size-1).getName(); ycors += echartsList.get(size-1).getValue(); System.out.println(xcors); System.out.println(ycors); model.addAttribute("xcors", xcors); model.addAttribute("ycors", ycors); return "showCityBar"; }
描述:定義一個String型數據,各個值以逗號分隔,X軸、Y軸分別定義。然后通過model.addAttribute(“xcors”, xcors)傳給前端。
2.2 前端
showCityBar.html
需要引入
<script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
<div id="main" style="width: 600px;height:400px; margin-left: 20%;"></div> <input type="hidden" th:value="${xcors}" id="xcors2"/> <input type="hidden" th:value="${ycors}" id="ycors2"/> <script type="text/javascript"> var xcors2 = document.getElementById("xcors2").value; var ycors2 = document.getElementById("ycors2").value; var xstrs= new Array(); //定義x數組 xstrs=xcors2.split(","); //字符分割 var ystrs= new Array(); //定義y數組 ystrs=ycors2.split(","); //字符分割 var myChart = echarts.init(document.getElementById('main')); var option = { title: { text: '客戶所在城市統計' }, tooltip: { trigger: 'axis' }, legend: { data: ['所在城市'] }, toolbox: { show: true, feature: { dataView: {show: true, readOnly: false}, magicType: {show: true, type: ['line', 'bar']}, restore: {show: true}, saveAsImage: {show: true} } }, calculable: true, xAxis: [ { type: 'category', data: xstrs } ], yAxis: [ { type: 'value' } ], series: [ { name: '所在城市', type: 'bar', data: ystrs, markPoint: { data: [ {type : 'max', name: '最大值'}, {type : 'min', name: '最小值'} ] }, markLine: { data: [ {type: 'average', name: '平均值'} ] } } ] }; // 使用剛指定的配置項和數據顯示圖表。 myChart.setOption(option); </script>
2.3 關鍵代碼
<input type="hidden" th:value="${xcors}" id="xcors2"/>
var xcors2 = document.getElementById("xcors2").value;
var xstrs= new Array(); //定義x數組
xstrs=xcors2.split(","); //字符分割
描述:創建一個input標簽,type設置為hidden,在js中通過document.getElementById().value取值,再定義一個xx數組,通過xx.split(",")進行字符分割。最后在option里的series中通過“data: xstrs”傳入即可。
2.4 效果展示