1. 程式人生 > >大資料視覺化展現之echarts實操

大資料視覺化展現之echarts實操

前言

作為大資料分析的最終目的是為了得到某種形式的輸出結果,而這些輸出結果大都以視覺化圖表的形式進行展示,當然了有些大資料分析不需要圖表展示如推薦系統。

而視覺化展現自然需要一套好用的圖表外掛,市場上有很多可以展現各種圖表的外掛,今天我給大家介紹的是百度出品的echarts,目前最新版本為echarts3,作為例項我使用的echarts2。

echarts2簡介

echarts是一套基於javascript的輕量級圖表框架,使用方式非常簡單,而展現的圖表形式很豐富,而且展現的圖表集成了很多實用的互動展示,如可以根據需要對圖表中的資料項進行隱藏,支援對資料進行拖拽、可以到處為圖片格式等等。

動手操練

本地新建一個html檔案,引入echarts,構造對應的展示資料,然後就可以雙擊這個html檔案在瀏覽器中訪問了,就是這麼簡單,甚至都不需要應用伺服器、web伺服器的支援。是不是超級輕量級呢。

  1. 基本的頁面程式碼如下:
<!DOCTYPE html>  
<head>  
    <meta charset="utf-8">  
    <title>資料展示</title>  
</head>
<body>  
    <!-- 為ECharts準備一個具備大小(寬高)的Dom -->
<div id="main" style="height:400px"></div> <!-- ECharts單檔案引入 --> <script src="http://echarts.baidu.com/build/dist/echarts.js"></script> <script type="text/javascript"> // 路徑配置 require.config({ paths: { echarts: 'http://echarts.baidu.com/build/dist'
} }); // 使用柱狀圖就載入bar模組,按需載入 require( [ 'echarts', 'echarts/chart/bar', 'echarts/chart/line', 'echarts/chart/funnel' //漏斗圖 ], function (ec) { chart1(ec); //繪製chart的函式,便於檢視獨立出來 } ); //繪製圖表1 function chart1(ec){ //具體程式碼見下文 }
</script> </body>
  1. 直角系圖表
    2.1. 構造對應直角系繪圖程式碼如下:
function chart1(ec){
    //基於準備好的dom,初始化echarts圖表
    var myChart = ec.init(document.getElementById('main')); 
    // 過渡---------------------
    myChart.showLoading({
        text: '正在努力的讀取資料中...',    //loading話術
    });
    myChart.hideLoading();
    var option = {
        title : {
            text: '2016年每日資料分析',
            subtext: '測試資料'
        },
        tooltip : {
            trigger: 'item',
            formatter: "{a} <br/>{b} : {c}",                        
            show: true
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        legend: {
            data:['註冊人數','實名人數','充值人數',
            '當日新註冊投資人數',"投資總人數","首投人數",
            "復投人數","還款人數","提現人數"]
        },
        xAxis : [
        {
            type : 'category',
            data : ["A月1日","A月2日","A月3日","A月4日","A月5日",
            "A月6日","A月7日","A月8日","A月9日","A月10日",
            "A月11日","A月12日","A月13日","A月14日","A月15日",
            "A月16日","A月17日","A月18日","A月19日","A月20日",
            "A月21日","A月22日","A月23日","A月24日","A月25日",
            "A月25日","A月25日","A月25日","A月29日","A月30日",
            "A月31日"]
        }
        ],
        yAxis : [
        {
            type : 'value'
        }
        ],
        series : [
        {
            name:"註冊人數",
            type:'bar',
            stack:'group1',//堆積展示
            data:[12,10,11,7,4,5,16,15,27,19,13,13,15,29,18,15,23,19,
            15,8,26,30,26,22,17,17,17,17,82,70,74]
        },
        {
            name:"實名人數",
            type:'bar',
            stack:'group1',//堆積展示
            data:[7,3,4,4,1,4,7,4,16,4,6,6,4,20,7,8,17,12,4,6,13,13,
            15,14,10,10,10,10,54,58,56]
        },
        {
            name:"充值人數",
            type:'line',
            data:[19,19,23,15,14,5,27,22,30,27,21,
            14,14,42,33,36,31,47,
            20,12,47,48,46,50,42,42,42,42,80,84,65]
        },
        {
            name:"當日新註冊投資人數",
            type:'line',
            data:[2,2,0,2,1,0,6,1,4,2,1,4,1,17,5,6,7,8,3,4,9,4,
            7,7,7,7,7,7,39,46,44]
        },
        {
            name:"投資總人數",
            type:'line',
            data:[52,66,64,61,52,66,69,77,93,59,71,71,59,113,96,80,
            75,89,77,46,113,79,112,102,82,82,82,82,148,143,96]
        },
        {
            name:"首投人數",
            type:'line',
            data:[3,6,3,3,5,0,8,2,7,6,2,5,1,19,7,8,7,11,4,5,13,6,
            14,10,13,13,13,13,42,58,51]
        },
        {
            name:"復投人數",
            type:'line',
            data:[49,61,62,60,48,66,62,75,87,54,69,66,
            58,95,90,75,70,
            80,74,41,101,74,99,93,92,92,92,92,108,87,46]
        },
        {
            name:"還款人數",
            type:'line',
            data:[71,52,129,0,0,177,0,33,98,0,140,
            89,78,105,116,68,
            110,82,33,36,162,37,181,81,70,70,70,70,145,27,0]
        },
        {
            name:"提現人數",
            type:'line',
            data:[47,43,30,46,0,0,92,29,32,46,14,0,0,112,52,63,42,
            56,0,0,129,54,30,60,39,39,39,39,42,74,40]
        }
            ]
    };        
    // 為echarts物件載入資料 
    myChart.setOption(option); 
}

2.2. 直角系效果展示圖一
對應的展示如下:
直角系折線圖及柱形圖展示

2.3. 直角系效果展示圖一
在圖例區域可以點選圖例名稱,則會隱藏不需要的資料展示,對應的展示如下:
隱藏掉部分圖例

  1. 漏斗圖
    3.1. 漏斗圖程式碼構造
    如果需要展示漏斗圖,則首先要在宣告也就是require ‘echarts/chart/funnel’,然後就是修改對應的構造繪圖程式碼部分。
unction chartFunnel(ec){        
    // 基於準備好的dom,初始化echarts圖表
    var myChart = ec.init(document.getElementById('main3')); 
    // 過渡---------------------
    myChart.showLoading({
        text: '正在努力的讀取資料中...',    //loading話術
    });
    myChart.hideLoading();
    var option = {              
        title : {
            text: '註冊實名投資漏斗圖',
            subtext: '每日漏洞轉換'
        },
        tooltip : {
            trigger: 'item',
            formatter: "{a} <br/>{b} : {c}",                        
            show: true
        },
        toolbox: {
            show : true,
            feature : {
                mark : {show: true},
                dataView : {show: true, readOnly: false},
                restore : {show: true},
                saveAsImage : {show: true}
            }
        },
        legend: {
        data:['註冊人數','實名人數','當日新註冊投資人數']
        },
        calculable:true,//允許拖拽重新計算
        series : [
        {
            name:"A月1日漏斗",
            type:'funnel',
            sort : 'descending',
            width:'40%',
            data:[
                {value:12,name:'註冊人數'},
                {value:7,name:'實名人數'},
                {value:2,name:'當日新註冊投資人數'}
            ]
        },
        { 
            name:"A月2日漏斗",
            type:'funnel', 
            x : '50%',
            sort : 'ascending',
            itemStyle: {
                normal: {
                    label: {position: 'left'}
                }
            },
            width:'40%',
            data:[
                {value:10,name:'註冊人數'},
                {value:3,name:'實名人數'},
                {value:2,name:'當日新註冊投資人數'}
            ]

        }
        ]
    };        
    // 為echarts物件載入資料 
    myChart.setOption(option);  
}

3.2. 漏斗圖效果
漏斗圖展示效果如下:
漏斗圖展示效果

學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入技術愛好者交流群373107565,我們一起學技術!

小總結

基本上操練下來,還是很順暢和簡潔的。而且echarts提供了線上的excel表格資料轉javascript資料或json格式工具,只需要複製表格到線上工具,即可方便的生成對應的資料格式。

小建議:為了圖表展示的美觀性,每一個維度的縱座標資料最好在一個量級內,如果某一個指標的量級較大,會造成別的維度資料縱座標太低而看不到效果。