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阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 这篇文章主要讲述Echarts设置字体和线条的颜色相关操作笔记,希望文章对你有所帮助,主要是自己的在线笔记吧。我在...
    蓝色梦想家阅读 9,874评论 1 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 内购规范文档:https://developer.apple.com/app-store/review/guide...
    wangyu2488阅读 14,240评论 21 17
  • 生活中的小惊喜,带给精神上的快乐是无与伦比。从去年开始给布伦山平台投第一篇稿到今天,恰好一周年。今天接到《华山风》...
    雨萧_7e68阅读 141评论 0 0