Spring Boot 2.x基礎(chǔ)教程:使用 ECharts 繪制各種華麗的數(shù)據(jù)圖表

上一節(jié)我們介紹了如何在Spring Boot中使用模板引擎Thymeleaf開發(fā)Web應(yīng)用的基礎(chǔ)浓利。接下來,我們介紹一下后端開發(fā)經(jīng)常會遇到的一個場景:可視化圖表的妖。

通常绅喉,這類需求在客戶端應(yīng)用中不太會用到,但是在后端的各種統(tǒng)計分析模塊會經(jīng)常碰到颈抚。比如:通過折線圖踩衩、柱狀圖、雷達圖等可視化形式,更直觀的展現(xiàn)和分析經(jīng)營狀況或系統(tǒng)運行情況驱富。這里我們將引入的數(shù)據(jù)可視化組件庫 ECharts來幫助我們完成這樣的任務(wù)锚赤。

ECharts簡介

ECharts是百度開源的一個前端組件。它是一個使用 JavaScript 實現(xiàn)的開源可視化庫褐鸥,可以流暢的運行在 PC 和移動設(shè)備上线脚,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome叫榕,F(xiàn)irefox浑侥,Safari等),底層依賴矢量圖形庫 ZRender晰绎,提供直觀寓落,交互豐富,可高度個性化定制的數(shù)據(jù)可視化圖表寒匙。

它提供了常規(guī)的折線圖零如、柱狀圖躏将、散點圖锄弱、餅圖、K線圖祸憋,用于統(tǒng)計的盒形圖会宪,用于地理數(shù)據(jù)可視化的地圖、熱力圖蚯窥、線圖掸鹅,用于關(guān)系數(shù)據(jù)可視化的關(guān)系圖、treemap拦赠、旭日圖巍沙,多維數(shù)據(jù)可視化的平行坐標,還有用于 BI 的漏斗圖荷鼠,儀表盤句携,并且支持圖與圖之間的混搭。

file

除了已經(jīng)內(nèi)置的包含了豐富功能的圖表允乐,ECharts 還提供了自定義系列矮嫉,只需要傳入一個renderItem函數(shù),就可以從數(shù)據(jù)映射到任何你想要的圖形牍疏,更棒的是這些都還能和已有的交互組件結(jié)合使用而不需要操心其它事情蠢笋。

你可以在下載界面下載包含所有圖表的構(gòu)建文件,如果只是需要其中一兩個圖表鳞陨,又嫌包含所有圖表的構(gòu)建文件太大昨寞,也可以在在線構(gòu)建中選擇需要的圖表類型后自定義構(gòu)建。

動手試一試

第一步:創(chuàng)建一個基礎(chǔ)Spring Boot應(yīng)用,或者拿上一節(jié)的工程chapter4-1(倉庫地址見文末)來進行加工援岩。

第二步:在pom.xml中引入Web應(yīng)用需要的web模塊和模板引擎thymeleaf模塊熟史,比如用Thymeleaf的時候:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

第三步:編寫一個Controller,將/路徑的請求窄俏,映射到index.html頁面

@Controller
public class HelloController {

    @GetMapping("/")
    public String index(ModelMap map) {
        return "index";
    }

}

第四步:在resources/templates目錄下創(chuàng)建index.html頁面蹂匹,具體內(nèi)容如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8" />
    <title>Spring Boot中使用ECharts</title>
    <script src="https://cdn.bootcss.com/echarts/4.6.0/echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 1000px;height:400px;"></div>
</body>

<script type="text/javascript">
    // 初始化ECharts組件到id為main的元素上
    let myChart = echarts.init(document.getElementById('main'));
    // 定義圖標的配置項
    let option = {
        title: {
            text: 'Spring Boot中使用ECharts'
        },
        tooltip: {},
        // x軸配置
        xAxis: {
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        // y軸配置
        yAxis: {},
        series: [{
            // 數(shù)據(jù)集(也可以從后端的Controller中傳入)
            data: [820, 932, 901, 934, 1290, 1330, 1320],
            // 圖表類型,這里使用line凹蜈,為折線圖
            type: 'line'
        }]
    };
    myChart.setOption(option);
</script>
</html>

在頁面內(nèi)容中主要包含三部分:

  • <head>中通過<script>標簽引入ECharts的組件JS限寞,這里使用了bootcss的免費公共cdn。如果用于自己生產(chǎn)環(huán)境仰坦,不建議使用這類免費CDN的JS或者CSS等靜態(tài)資源履植。可以從官網(wǎng)下載所需的靜態(tài)內(nèi)容悄晃,放到Spring Boot的靜態(tài)資源位置(如果不知道在哪玫霎,可見上一篇),或是放到自己公司的靜態(tài)資源管理的服務(wù)器上妈橄,實現(xiàn)動靜分離庶近。
  • <body>中定義了一個id為main的<div>標簽,這個標簽后續(xù)將用來渲染EChart組件
  • 最后的一段<script>內(nèi)容則是具體的EChart圖標的展現(xiàn)初始化和配置眷蚓。具體配置內(nèi)容可見代碼中的注釋信息鼻种。

第五步:啟動應(yīng)用,訪問localhost:8080沙热,如果上面操作均無差錯叉钥,那我們就會得到類似下面的折線圖:

file

關(guān)于ECharts圖表的調(diào)試,官方還提供了一個在線工具篙贸,有興趣的讀者可以點擊這里嘗試一下投队。

file

更多本系列免費教程連載「點擊進入?yún)R總目錄」

代碼示例

本文的相關(guān)例子可以查看下面?zhèn)}庫中的chapter4-2目錄:

如果您覺得本文不錯,歡迎Star支持爵川,您的關(guān)注是我堅持的動力敷鸦!

歡迎關(guān)注我的公眾號:程序猿DD,獲得獨家整理的學習資源和日常干貨推送雁芙。
如果您對我的專題內(nèi)容感興趣轧膘,也可以關(guān)注我的博客:didispace.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市兔甘,隨后出現(xiàn)的幾起案子谎碍,更是在濱河造成了極大的恐慌,老刑警劉巖洞焙,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟆淀,死亡現(xiàn)場離奇詭異拯啦,居然都是意外死亡,警方通過查閱死者的電腦和手機熔任,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門褒链,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人疑苔,你說我怎么就攤上這事甫匹。” “怎么了惦费?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵兵迅,是天一觀的道長。 經(jīng)常有香客問我薪贫,道長恍箭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任瞧省,我火速辦了婚禮扯夭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞍匾。我一直安慰自己交洗,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布候学。 她就那樣靜靜地躺著藕筋,像睡著了一般纵散。 火紅的嫁衣襯著肌膚如雪梳码。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天伍掀,我揣著相機與錄音掰茶,去河邊找鬼。 笑死蜜笤,一個胖子當著我的面吹牛濒蒋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播把兔,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沪伙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了县好?” 一聲冷哼從身側(cè)響起围橡,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缕贡,沒想到半個月后翁授,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拣播,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年收擦,在試婚紗的時候發(fā)現(xiàn)自己被綠了贮配。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡塞赂,死狀恐怖泪勒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宴猾,我是刑警寧澤酣藻,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站鳍置,受9級特大地震影響辽剧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜税产,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一怕轿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辟拷,春花似錦撞羽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至隅俘,卻和暖如春邻奠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背为居。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工碌宴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蒙畴。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓贰镣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親膳凝。 傳聞我的和親對象是個殘疾皇子碑隆,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容