1. Echarts介紹
Echarts是一款由百度前端技術部開發的,基於Javascript的數據可視化圖表庫,提供直觀,生動,可交互,可個性化定製的數據可視化圖表。
https://echarts.apache.org/examples/zh/index.html#chart-type-globe
教程:
https://echarts.apache.org/zh/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts
提供大量常用的數據可視化圖表,底層基於ZRender(一個全新的輕量級canvas類庫),創建了座標系,圖例,提示,工具箱等基礎組件,並在此上構建出折線圖(區域圖)、柱狀圖(條狀圖)、散點圖(氣泡圖)、餅圖(環形圖)、K線圖、地圖、力導向佈局圖以及和絃圖,同時支持任意維度的堆積和多圖表混合展現。
2. Web程序工程結構
本項目是個純粹的JavaEE項目,基於spring框架整合構建。使用maven的tomcat插件啓動項目。
3. 感受Echarts—簡單入門
3.1. 下載Echarts
從官網下載界面選擇你需要的版本下載,根據開發者功能和體積上的需求,提供了不同打包的下載,如果在體積上沒有要求,可以直接下載完整版本。開發環境建議下載源代碼版本,包含了常見的錯誤提示和警告。
3.2. 頁面引入Echarts
ECharts 3 開始只需要像普通的 JavaScript 庫一樣用 script 標籤引入即可。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- 引入 ECharts 文件 -->
<script src="echarts.min.js"></script>
</head>
</html>
3.3. 繪製一個簡單的圖表
在繪圖前我們需要爲 ECharts 準備一個具備高寬的 DOM 容器:
<body>
<!-- 爲 ECharts 準備一個具備大小(寬高)的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
</body>
然後就可以通過 echarts.init 方法初始化一個 echarts 實例並通過 setOption 方法生成一個簡單的柱狀圖,下面是完整代碼。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script src="echarts.min.js"></script>
</head>
<body>
<!-- 爲ECharts準備一個具備大小(寬高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基於準備好的dom,初始化echarts實例
var myChart = echarts.init(document.getElementById('main'));
// 指定圖表的配置項和數據
var option = {
title: {
text: 'ECharts 入門示例'
},
tooltip: {},
legend: {
data:['銷量']
},
xAxis: {
data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
},
yAxis: {},
series: [{
name: '銷量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}]
};
// 使用剛指定的配置項和數據顯示圖表。
myChart.setOption(option);
</script>
</body>
</html>
4. 數據可視化的展現
課程中帶領大家去實現一個從後端到前端展示數據的過程。其他圖表類型都是大同小異,大家重點掌握異步數據加載的方法。
幾個開發細節注意點:
4.1. Echarts前端數據格式問題
注意,當異步加載數據的時候,前端一般需要的是數據格式是數組。一定要對應上。在這裏我們可以使用Java Bean封裝數據,然後轉換成json扔到前端,對應上相應的字段即可。
ObjectMapper om = new ObjectMapper();
beanJson = om.writeValueAsString(bean);
4.2. Controller返回的json
@RequestMapping(value="/xxxx",produces="application/json;charset=UTF-8")
@ResponseBody
4.3. 查詢返回數據排序的問題
example.setOrderByClause("`dateStr` ASC");