echarts

慕课网 Echarts3.0入门基础与实战 授课:蜗牛老湿
http://www.imooc.com/view/687

一.浏览器画图原理简介

1.Canvas

基于像素,单个html,类似于画笔在画布上画画,详情可见html5中的canvas介绍。Echarts基于canvas画图。
以下是一个canvas的简单例子,html中



您的浏览器不支持canvas标签。

js中

//获取Canvas对象(画布)
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");  
//开始一个新的绘制路径
ctx.beginPath();
//设置弧线的颜色为蓝色
ctx.strokeStyle = "blue";
var circle = {
    x : 100,    //圆心的x轴坐标值
    y : 100,    //圆心的y轴坐标值
    r : 50      //圆的半径
};
//沿着坐标点(100,100)为圆心、半径为50px的圆的顺时针方向绘制弧线
ctx.arc(circle.x, circle.y, circle.r, 0, Math.PI * 2, false);    
//按照指定的路径绘制弧线
ctx.stroke();

运行结果:


2.Svg

基于对象模型,多个图形元素,高保真
svg例子








运行结果:


常见图形组件

  • 标题、工具栏、图例、提示框
  • 坐标轴:x轴、y轴

echart官网上主要看看它的配置项手册,它对每一个参数都做了详细的描述
http://www.echartsjs.com/option.html#title


还有它的官方实例 http://www.echartsjs.com/examples/

二.Echarts 库简介

1.简单的柱状图,折线图示例

在http://www.echartsjs.com/download.html链接里下载完整版,echats.min.js,然后引入到html文件中就可以使用了,以下是一个简单的直方图例子。
在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器。然后就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图




    
    bar
    
    



运行结果:



以下是一个简单的折线图例子




    
    line
    
    


    
标题组件title

http://www.echartsjs.com/option.html#title
标题负责显示整个图表的标题,主要配置option下的title

title: {
  show:true,
  text: 'ECharts 入门示例', //标题文字
  subtext:'学习ECharts就来慕课网', //子标题
  left:'right', //标题位置( 数字就是像素值 ,也可以是 center left right这种值)
  borderColor:'red',  //边框颜色
  borderWidth:5, //边框宽度
  textStyle:{
      fontSize:40
  }
},
工具箱组件

http://www.echartsjs.com/option.html#toolbox
组件的工具栏

toolbox: {
        show: true,  //是否显示
        feature: {
            dataView:{
                show:true
            },  //数据视图
            restore:{
                show:true
            },  //还原
            dataZoom:{
                show:true
            },  //缩放视图
            saveAsImage: {
                show: true
            }, //保存图片
            magicType: {
                type: ['line', 'bar']
            }  //动态类型切换
        }//具体需要显示的功能
    },
弹窗组件

http://www.echartsjs.com/option.html#tooltip

    tooltip: {
        show:true,  //是否显示
        trigger: 'axis'  //触发类型为x轴触发
    },
标记线和标记点markline markpoint

http://www.echartsjs.com/option.html#series-line.markLine
最大值,最小值 平均值的标记线

  series: [{
        name: '销量',
        type: 'line',
        data: [5, 20, 36, 10, 10, 20],
        markPoint: {
            data: [
                {type: 'max', name: '最大值'},
                {type: 'min', name: '最小值',symbol:'arrow'}
            ]
        },
        markLine: {
            data: [
                {type: 'average', name: '平均值'}
            ]
        }
    }]

三.Echar常用图

饼图

饼图展示数据的特点一般表示数据占全局的百分比,type为pie,重要的需要设置的属性如下

  • Center 圆心坐标
  • Radius 半径
  • Name 图例名字
  • selectedMode 是否支持多选
    html中

js中,与折线图不同的是,series中,type为pie表示饼图;radius指的是饼图的半径,其数组的第一个参数是内圆半径,第二个参数为外圆半径,50%表示容器高宽中较小一项的 50% 长度;center为饼图的圆心坐标,第一个参数为横坐标,第二个参数为纵坐标。

// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
option = {
    tooltip: {
        trigger: 'item',
        formatter: "{a} 
{b}: {c} ({d}%)" }, legend: { orient: 'vertical', x: 'left', data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎'] }, series: [ { name:'访问来源', type:'pie', //图表为饼图 radius: ['50%', '70%'], //饼图的半径 center: ['50%', '50%'], //饼图的圆心位置 avoidLabelOverlap: false, label: { normal: { show: false, position: 'center' }, emphasis: { show: true, textStyle: { fontSize: '30', fontWeight: 'bold' } } }, labelLine: { normal: { show: false } }, data:[ {value:335, name:'直接访问'},//这里的name必须和legend(图例)中的data一一对应 {value:310, name:'邮件营销'}, {value:234, name:'联盟广告'}, {value:135, name:'视频广告'}, {value:1548, name:'搜索引擎'} ] } ] };

运行结果如下


仪表盘

省略

地图

该数据可以去官网的实例拷贝,由于代码太长省略部分数据。geoCoordMap表示各个城市的经纬度,data是每个城市说对应的图表想要表达的数据,

var data = [ //具体数据
    {name: '海门', value: 9},
    {name: '鄂尔多斯', value: 12},
    ..................//此处数据省略
];
var geoCoordMap = { //地理坐标图
    '海门':[121.15,31.89],
    '鄂尔多斯':[109.781327,39.608266],
     ..................//此处数据省略  
};

var convertData = function (data) {
    var res = [];
    for (var i = 0; i < data.length; i++) {
        var geoCoord = geoCoordMap[data[i].name];
        if (geoCoord) {
            res.push({
                name: data[i].name,
                value: geoCoord.concat(data[i].value)
            });
        }
    }
    return res;
};

//上面的函数处理过后的数据
//   convertData = [
//       {
//         name: '海门',
//         value: [121.15, 31.89, 9],
//       },
//       {
//         name: "鄂尔多斯",
//         value: [109.781327, 39.608266, 12]
//       }
//       ..................//此处数据省略  
//   ];

function renderItem(params, api) {
    var coords = [
        [116.7,39.53],
        [103.73,36.03],
        [112.91,27.87],
        [120.65,28.01],
        [119.57,39.95]
    ];
    var points = [];
    for (var i = 0; i < coords.length; i++) {
        points.push(api.coord(coords[i]));
    }
    var color = api.visual('color');

    return {
        type: 'polygon',
        shape: {
            points: echarts.graphic.clipPointsByRect(points, {
                x: params.coordSys.x,
                y: params.coordSys.y,
                width: params.coordSys.width,
                height: params.coordSys.height
            })
        },
        style: api.style({
            fill: color,
            stroke: echarts.color.lift(color)
        })
    };
}

option = {
    // backgroundColor: '#404a59',
    title: {
        text: '全国主要城市空气质量',
        subtext: 'data from PM25.in',
        sublink: 'http://www.pm25.in',
        left: 'center',
        textStyle: {
            color: '#fff'
        }
    },
    tooltip : {
        trigger: 'item'
    },
    bmap: {
        center: [104.114129, 37.550339],
        zoom: 5,
        roam: true,
        mapStyle: {
            styleJson: [
                    {
                        "featureType": "water",
                        "elementType": "all",
                        "stylers": {
                            "color": "#044161"
                        }
                    },
                    {
                        "featureType": "land",
                        "elementType": "all",
                        "stylers": {
                            "color": "#004981"
                        }
                    },
                    {
                        "featureType": "boundary",
                        "elementType": "geometry",
                        "stylers": {
                            "color": "#064f85"
                        }
                    },
                    {
                        "featureType": "railway",
                        "elementType": "all",
                        "stylers": {
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "highway",
                        "elementType": "geometry",
                        "stylers": {
                            "color": "#004981"
                        }
                    },
                    {
                        "featureType": "highway",
                        "elementType": "geometry.fill",
                        "stylers": {
                            "color": "#005b96",
                            "lightness": 1
                        }
                    },
                    {
                        "featureType": "highway",
                        "elementType": "labels",
                        "stylers": {
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "arterial",
                        "elementType": "geometry",
                        "stylers": {
                            "color": "#004981"
                        }
                    },
                    {
                        "featureType": "arterial",
                        "elementType": "geometry.fill",
                        "stylers": {
                            "color": "#00508b"
                        }
                    },
                    {
                        "featureType": "poi",
                        "elementType": "all",
                        "stylers": {
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "green",
                        "elementType": "all",
                        "stylers": {
                            "color": "#056197",
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "subway",
                        "elementType": "all",
                        "stylers": {
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "manmade",
                        "elementType": "all",
                        "stylers": {
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "local",
                        "elementType": "all",
                        "stylers": {
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "arterial",
                        "elementType": "labels",
                        "stylers": {
                            "visibility": "off"
                        }
                    },
                    {
                        "featureType": "boundary",
                        "elementType": "geometry.fill",
                        "stylers": {
                            "color": "#029fd4"
                        }
                    },
                    {
                        "featureType": "building",
                        "elementType": "all",
                        "stylers": {
                            "color": "#1a5787"
                        }
                    },
                    {
                        "featureType": "label",
                        "elementType": "all",
                        "stylers": {
                            "visibility": "off"
                        }
                    }
            ]
        }
    },
    series : [ //系列列表
        {
            name: 'pm2.5', //系列名称,用于图例筛选,tooltip显示
            type: 'scatter', //散点(气泡)图
            coordinateSystem: 'bmap',//该系列使用的坐标系
            data: convertData(data),
            symbolSize: function (val) { //标记的大小
                return val[2] / 10;
            },
            label: { //图形上的文本标签
                normal: {
                    formatter: '{b}',
                    position: 'right',
                    show: false
                },
                emphasis: { //高亮的图形和标签样式
                    show: true
                }
            },
            itemStyle: {
                normal: {
                    color: '#ddb926'
                }
            }
        },
        {
            name: 'Top 5',
            type: 'effectScatter',//带有涟漪特效动画的散点(气泡)图
            coordinateSystem: 'bmap',
            data: convertData(data.sort(function (a, b) {
                return b.value - a.value;
            }).slice(0, 6)),
            symbolSize: function (val) {
                return val[2] / 10;
            },
            showEffectOn: 'emphasis',
            rippleEffect: {
                brushType: 'stroke'
            },
            hoverAnimation: true,
            label: {
                normal: {
                    formatter: '{b}',
                    position: 'right',
                    show: true
                }
            },
            itemStyle: {
                normal: {
                    color: '#f4e925',
                    shadowBlur: 10,
                    shadowColor: '#333'
                }
            },
            zlevel: 1
        },
        {
            type: 'custom',//自定义系列
            coordinateSystem: 'bmap',
            renderItem: renderItem,
            itemStyle: {
                normal: {
                    opacity: 0.5
                }
            },
            animation: false,
            silent: true,
            data: [0],
            z: -10
        }
    ]
};

四.Echart中级使用

多个坐标轴
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
option = {
    tooltip: {
        trigger: 'axis'
    },
    toolbox: {
        feature: {
            dataView: {show: true, readOnly: false},
            magicType: {show: true, type: ['line', 'bar']},
            restore: {show: true},
            saveAsImage: {show: true}
        }
    },
    legend: {
        data:['蒸发量','降水量','平均温度']
    },
    xAxis: [
        {
            type: 'category',
            data: ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
        }
    ],
    yAxis: [
        {
            type: 'value',
            name: '水量',
            min: 0,
            max: 250,
            interval: 50,
            axisLabel: {
                formatter: '{value} ml'
            }
        },
        {
            type: 'value',
            name: '温度',
            min: 0,
            max: 25,
            interval: 5,
            axisLabel: {
                formatter: '{value} °C'
            }
        }
    ],
    series: [
        {
            name:'蒸发量',
            type:'bar',
            data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
        },
        {
            name:'降水量',
            type:'bar',
            data:[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]
        },
        {
            name:'平均温度',
            type:'line',
            yAxisIndex: 1,
            data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
        }
    ]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
区域缩放
值域选择

你可能感兴趣的:(echarts)