ECharts入門(一)

一、簡單入門

1.從官網下載echarts

http://echarts.baidu.com/download.html

2.引入echarts

  • 3.0以上的版本

    <html>
    <head>
        <meta charset="utf-8">
        <!-- 引入 ECharts 文件 -->
        <script src="echarts.min.js"></script>
    </head>
    </html>
    

3.繪制柱狀圖表

  • 首先在頁面上設置一個顯示區域

    <body>
        <!-- 為 ECharts 準備一個具備大小(寬高)的 DOM -->
        <div id="main" style="width: 600px;height:400px;"></div>
    </body>
    
  • 然后通過 echarts.init 方法初始化一個 echarts 實例并通過 setOption 方法生成一個簡單的柱狀圖

     <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>
    

二、自定義ECharts

  • 一般官方定制的echarts會滿足絕大部分業務需求,但有時也需要自定義一些echarts。
  1. 在線自定義構建:比較方便。
  2. 使用 echarts/build/build.js 腳本自定義構建:比在線構建更靈活一點,并且支持多語言。
  3. 直接使用構建工具(如 rollupwebpackbrowserify)自己構建:也是一種選擇。

三、餅狀圖

  • 最簡單的圖表,不需要x y 軸。

    myChart.setOption({
        series : [
            {
                name: '訪問來源',
                type: 'pie',
                radius: '55%',
                data:[
                    {value:235, name:'視頻廣告'},
                    {value:274, name:'聯盟廣告'},
                    {value:310, name:'郵件營銷'},
                    {value:335, name:'直接訪問'},
                    {value:400, name:'搜索引擎'}
                ]
            }
        ]
    })
    
  • 設置樣式

    option = {
        //設置全局背景色
        backgroundColor: '#2c343c',
        visualMap: {
                // 不顯示 visualMap 組件,只用于明暗度的映射
                show: false,
                // 映射的最小值為 80
                min: 80,
                // 映射的最大值為 600
                max: 600,
                inRange: {
                    // 明暗度的范圍是 0 到 1
                    colorLightness: [0, 1]
                }
            },
        series : [
            {
                name: '訪問來源',
                type: 'pie',
                radius: '55%',
                data:[
                    {value:235, name:'視頻廣告'},
                    {value:274, name:'聯盟廣告'},
                    {value:310, name:'郵件營銷'},
                    {value:335, name:'直接訪問'},
                    {
                        value:400,
                        name:'搜索引擎',
                        //設置每個扇形的樣式
                        itemStyle: {
                            color: '#c23531'
                        }
                    },
                ],
                //設置成南丁格爾圖
                roseType: 'angle',
                //設置全局字體樣式
                 textStyle: {
                    color: 'rgba(255, 255, 255, 0.3)'
                }
                //設置每個系利的字體樣式
                  label: {
                    normal: {
                        textStyle: {
                            color: 'rgba(255, 255, 255, 0.3)'
                        }
                    }
                },
               //設置視覺引導線的樣式
                labelLine: {
                    normal: {
                        lineStyle: {
                            color: 'rgba(255, 255, 255, 0.3)'
                        }
                    }
                },
               //設置扇形的樣式
                itemStyle: {
                        // 陰影的大小
                        shadowBlur: 200,
                        // 陰影水平方向上的偏移
                        shadowOffsetX: 0,
                        // 陰影垂直方向上的偏移
                        shadowOffsetY: 0,
                        // 陰影顏色
                        shadowColor: 'rgba(0, 0, 0, 0.5)'
                    // 設置扇形的顏色
                         color: '#c23531',
                    }
                }
            }
        ]
    };
    

四、ECharts 中的樣式簡介

1.顏色主題

? var chart = echarts.init(dom, 'light');

? var chart = echarts.init(dom, 'dark');

  • 設置json格式的主題

    // 假設主題名稱是 "vintage"  xxx/xxx/ 代表路徑
    $.getJSON('xxx/xxx/vintage.json', function (themeJSON) {
        echarts.registerTheme('vintage', JSON.parse(themeJSON))
        var chart = echarts.init(dom, 'vintage');
    });
    
  • 設置js格式的主題

    // HTML 引入 vintage.js 文件后(假設主題名稱是 "vintage")
    var chart = echarts.init(dom, 'vintage');
    

2.調色盤

  • 在option中全局設置

    option = {
        // 全局調色盤。
        color: ['#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83',  '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3'],
    
        series: [{
            type: 'bar',
            // 此系列自己的調色盤。
            color: ['#dd6b66','#759aa0','#e69d87','#8dc1a9','#ea7e53','#eedd78','#73a373','#73b9bc','#7289ab', '#91ca8c','#f49f42'],
            ...
        }, {
            type: 'pie',
            // 此系列自己的調色盤。
            color: ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C','#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'],
            ...
        }]
    }
    

3.直接設置樣式

  • 鼠標懸浮時的高亮樣式

    //4.0版本的寫法
    option = {
        series: {
            type: 'scatter',
    
            // 普通樣式。
            itemStyle: {
                // 點的顏色。
                color: 'red'
            },
            label: {
                show: true,
                // 標簽的文字。
                formatter: 'This is a normal label.'
            },
    
            // 高亮樣式。
            emphasis: {
                itemStyle: {
                    // 高亮時點的顏色。
                    color: 'blue'
                },
                label: {
                    show: true,
                    // 高亮時標簽的文字。
                    formatter: 'This is a emphasis label.'
                }
            }
        }
    }
    //4.0之前的版本寫法,但是不推薦
    option = {
        series: {
            type: 'scatter',
    
            itemStyle: {
                // 普通樣式。
                normal: {
                    // 點的顏色。
                    color: 'red'
                },
                // 高亮樣式。
                emphasis: {
                    // 高亮時點的顏色。
                    color: 'blue'
                }
            },
    
            label: {
                // 普通樣式。
                normal: {
                    show: true,
                    // 標簽的文字。
                    formatter: 'This is a normal label.'
                },
                // 高亮樣式。
                emphasis: {
                    show: true,
                    // 高亮時標簽的文字。
                    formatter: 'This is a emphasis label.'
                }
            }
        }
    }
    

4.通過 visualMap 組件設定樣式

  • visualMap是視覺映射組件,提供了以下視覺元素:

    圖形類別(symbol)圖形大小(symbolSize) 顏色(color)透明度(opacity)色調(colorHue)

    顏色透明度(colorAlpha)顏色明暗度(colorLightness)顏色飽和度(colorSaturation)

五、異步數據加載和更新

1.異步加載

  • 圖表初始化后不管任何時候通過 jQuery 等工具異步獲取數據后通過 setOption 填入數據和配置項

    var myChart = echarts.init(document.getElementById('main'));
    
    $.get('data.json').done(function (data) {
        myChart.setOption({
            title: {
                text: '異步數據加載示例'
            },
            tooltip: {},
            legend: {
                data:['銷量']
            },
            xAxis: {
                data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
            },
            yAxis: {},
            series: [{
                name: '銷量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        });
    });
    
  • 先設置完其它的樣式,顯示一個空的直角坐標軸,然后獲取數據后填入數據。

    var myChart = echarts.init(document.getElementById('main'));
    // 顯示標題,圖例和空的坐標軸
    myChart.setOption({
        title: {
            text: '異步數據加載示例'
        },
        tooltip: {},
        legend: {
            data:['銷量']
        },
        xAxis: {
            data: []
        },
        yAxis: {},
        series: [{
            name: '銷量',
            type: 'bar',
            data: []
        }]
    });
    
    // 異步加載數據
    $.get('data.json').done(function (data) {
        // 填入數據
        myChart.setOption({
            xAxis: {
                data: data.categories
            },
            series: [{
                // 根據名字對應到相應的系列
                name: '銷量',
                data: data.data
            }]
        });
    });
    

2.loading動畫

  • 有時數據加載時間過長的話,需要一些過場動畫。

    //顯示加載動畫
    myChart.showLoading();
    $.get('data.json').done(function (data) {
       //隱藏加載動畫
        myChart.hideLoading();
        myChart.setOption(...);
    });
    

3.數據的動態更新

  • 定時獲取數據,setOption 填入數據,ECharts 會找到兩組數據之間的差異然后通過合適的動畫去表現數據的變化。
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容

  • 這篇文章主要講述Echarts設置字體和線條的顏色相關操作筆記,希望文章對你有所幫助,主要是自己的在線筆記吧。我在...
    藍色夢想家閱讀 10,059評論 1 1
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,785評論 18 139
  • 內購規范文檔:https://developer.apple.com/app-store/review/guide...
    wangyu2488閱讀 14,357評論 21 17
  • 生活中的小驚喜,帶給精神上的快樂是無與倫比。從去年開始給布倫山平臺投第一篇稿到今天,恰好一周年。今天接到《華山風》...
    雨蕭_7e68閱讀 158評論 0 0