zoukankan      html  css  js  c++  java
  • EChars学习-1

    Echarts,编写来自Enterprise Charts,商业级数据图表,是百度的一个开源的数据可视化工具

    官网地址:http://echarts.baidu.com/

    一、引入Echarts

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


    二、绘制
     

    在绘制前需要准备一个dom容器

    <body>
        <!-- 为 ECharts 准备一个具备大小(宽高)的Dom -->
        <div id="main" style=" 600px;height:400px;"></div>
    </body>

    然后就可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图,下面是完整代码

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <title>ECharts</title>
     6     <!-- 引入 echarts.js -->
     7     <script src="echarts.js"></script>
     8 </head>
     9 <body>
    10     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    11     <div id="main" style=" 600px;height:400px;"></div>
    12     <script type="text/javascript">
    13         // 基于准备好的dom,初始化echarts实例
    14         var myChart = echarts.init(document.getElementById('main'));
    15 
    16         // 指定图表的配置项和数据
    17         var option = {
    18             title: {
    19                 text: 'ECharts 入门示例'
    20             },
    21             tooltip: {},
    22             legend: {
    23                 data:['销量']
    24             },
    25             xAxis: {
    26                 data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    27             },
    28             yAxis: {},
    29             series: [{
    30                 name: '销量',
    31                 type: 'bar',
    32                 data: [5, 20, 36, 10, 10, 20]
    33             }]
    34         };
    35 
    36         // 使用刚指定的配置项和数据显示图表。
    37         myChart.setOption(option);
    38     </script>
    39 </body>
    40 </html>

    这样你的第一个图表就诞生了!

    三、绘制地图

    上面图表例子是Echarts官网提供的例子,比较简单。下面绘制一个地图 
    需要引入三个文件:

    <script src="js/echarts.js"></script>
    <script src="js/jquery.js"></script>
    <script src="js/world.js"></script>//官网上下载


    综合上述:
    Echarts官网提供了两种地图数据类型,一种是js,一种是json。这里先以js引入为例

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="utf-8">
     5     <title>ECharts</title>
     6     <!-- 引入 echarts.js -->
     7     <script src="js/echarts.js"></script>
     8     <script src="js/jquery.js"></script>
     9     <script src="js/world.js"></script>
    10 
    11 </head>
    12 <body>
    13     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    14     <div id="main" style=" 1600px;height:1000px;"></div>
    15     <script type="text/javascript"><!--
    16     var chart = echarts.init(document.getElementById('main'));
    17     chart.setOption({
    18         series: [{
    19             type: 'map',
    20             map: 'world'
    21         }]
    22     });
    23    </script>
    24 </body>
    25 </html>

    四、绘制动态迁移图

    同上引入所需js文件

    <script src="js/echarts.js"></script>
    <script src="js/jquery.js"></script>
    <script src="js/china.js"></script>

    Echarts使用实际就三步

    1、基于准备好的dom,初始化echarts实例(初始化)(之前要准备js和容器)

    var chart = echarts.init(document.getElementById('main'));

    2、参数设置,以及数据设置(可以直接从Echarts官网提供的例子中查找)

    3、使用echarts实例来使刚指定的配置项和数据显示图表(生效)

    chart .setOption(option);

    完整代码如下:(上述都是在自己的world上面整理的,希望格式正确啊)

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="UTF-8">
      5         <title></title>
      6          
      7     <script src="js/echarts.min.js"></script>
      8     <script src="js/china.js"></script>
      9         
     10     </head>
     11     <body>
     12         <div id="main" style="900px;height:666px;  border: 1px solid red;"></div>
     13     <script type="text/javascript">
     14         // 基于准备好的dom,初始化echarts实例
     15         var myChart = echarts.init(document.getElementById('main'));
     16         // 指定图表的配置项和数据
     17 //      开始
     18         var geoCoordMap = {//用到的城市的所有的经纬度
     19     '上海': [121.4648,31.2891],
     20     '东莞': [113.8953,22.901],
     21     '东营': [118.7073,37.5513],
     22     '中山': [113.4229,22.478],
     23     '临汾': [111.4783,36.1615],
     24     '临沂': [118.3118,35.2936],
     25     '丹东': [124.541,40.4242],
     26     '丽水': [119.5642,28.1854],
     27     '乌鲁木齐': [87.9236,43.5883],
     28     '佛山': [112.8955,23.1097],
     29     '保定': [115.0488,39.0948],
     30     '兰州': [103.5901,36.3043],
     31     '包头': [110.3467,41.4899],
     32     '北京': [116.4551,40.2539],
     33     '北海': [109.314,21.6211],
     34     '南京': [118.8062,31.9208],
     35     '南宁': [108.479,23.1152],
     36     '南昌': [116.0046,28.6633],
     37     '南通': [121.1023,32.1625],
     38     '厦门': [118.1689,24.6478],
     39     '台州': [121.1353,28.6688],
     40     '合肥': [117.29,32.0581],
     41     '呼和浩特': [111.4124,40.4901],
     42     '咸阳': [108.4131,34.8706],
     43     '哈尔滨': [127.9688,45.368],
     44     '唐山': [118.4766,39.6826],
     45     '嘉兴': [120.9155,30.6354],
     46     '大同': [113.7854,39.8035],
     47     '大连': [122.2229,39.4409],
     48     '天津': [117.4219,39.4189],
     49     '太原': [112.3352,37.9413],
     50     '威海': [121.9482,37.1393],
     51     '宁波': [121.5967,29.6466],
     52     '宝鸡': [107.1826,34.3433],
     53     '宿迁': [118.5535,33.7775],
     54     '常州': [119.4543,31.5582],
     55     '广州': [113.5107,23.2196],
     56     '廊坊': [116.521,39.0509],
     57     '延安': [109.1052,36.4252],
     58     '张家口': [115.1477,40.8527],
     59     '徐州': [117.5208,34.3268],
     60     '德州': [116.6858,37.2107],
     61     '惠州': [114.6204,23.1647],
     62     '成都': [103.9526,30.7617],
     63     '扬州': [119.4653,32.8162],
     64     '承德': [117.5757,41.4075],
     65     '拉萨': [91.1865,30.1465],
     66     '无锡': [120.3442,31.5527],
     67     '日照': [119.2786,35.5023],
     68     '昆明': [102.9199,25.4663],
     69     '杭州': [119.5313,29.8773],
     70     '枣庄': [117.323,34.8926],
     71     '柳州': [109.3799,24.9774],
     72     '株洲': [113.5327,27.0319],
     73     '武汉': [114.3896,30.6628],
     74     '汕头': [117.1692,23.3405],
     75     '江门': [112.6318,22.1484],
     76     '沈阳': [123.1238,42.1216],
     77     '沧州': [116.8286,38.2104],
     78     '河源': [114.917,23.9722],
     79     '泉州': [118.3228,25.1147],
     80     '泰安': [117.0264,36.0516],
     81     '泰州': [120.0586,32.5525],
     82     '济南': [117.1582,36.8701],
     83     '济宁': [116.8286,35.3375],
     84     '海口': [110.3893,19.8516],
     85     '淄博': [118.0371,36.6064],
     86     '淮安': [118.927,33.4039],
     87     '深圳': [114.5435,22.5439],
     88     '清远': [112.9175,24.3292],
     89     '温州': [120.498,27.8119],
     90     '渭南': [109.7864,35.0299],
     91     '湖州': [119.8608,30.7782],
     92     '湘潭': [112.5439,27.7075],
     93     '滨州': [117.8174,37.4963],
     94     '潍坊': [119.0918,36.524],
     95     '烟台': [120.7397,37.5128],
     96     '玉溪': [101.9312,23.8898],
     97     '珠海': [113.7305,22.1155],
     98     '盐城': [120.2234,33.5577],
     99     '盘锦': [121.9482,41.0449],
    100     '石家庄': [114.4995,38.1006],
    101     '福州': [119.4543,25.9222],
    102     '秦皇岛': [119.2126,40.0232],
    103     '绍兴': [120.564,29.7565],
    104     '聊城': [115.9167,36.4032],
    105     '肇庆': [112.1265,23.5822],
    106     '舟山': [122.2559,30.2234],
    107     '苏州': [120.6519,31.3989],
    108     '莱芜': [117.6526,36.2714],
    109     '菏泽': [115.6201,35.2057],
    110     '营口': [122.4316,40.4297],
    111     '葫芦岛': [120.1575,40.578],
    112     '衡水': [115.8838,37.7161],
    113     '衢州': [118.6853,28.8666],
    114     '西宁': [101.4038,36.8207],
    115     '西安': [109.1162,34.2004],
    116     '贵阳': [106.6992,26.7682],
    117     '连云港': [119.1248,34.552],
    118     '邢台': [114.8071,37.2821],
    119     '邯郸': [114.4775,36.535],
    120     '郑州': [113.4668,34.6234],
    121     '鄂尔多斯': [108.9734,39.2487],
    122     '重庆': [107.7539,30.1904],
    123     '金华': [120.0037,29.1028],
    124     '铜川': [109.0393,35.1947],
    125     '银川': [106.3586,38.1775],
    126     '镇江': [119.4763,31.9702],
    127     '长春': [125.8154,44.2584],
    128     '长沙': [113.0823,28.2568],
    129     '长治': [112.8625,36.4746],
    130     '阳泉': [113.4778,38.0951],
    131     '青岛': [120.4651,36.3373],
    132     '韶关': [113.7964,24.7028]
    133 };
    134 
    135         var BJData = [//从北京出发
    136             [{name:'北京'}, {name:'上海',value:95}],
    137             [{name:'北京'}, {name:'广州',value:90}],
    138             [{name:'北京'}, {name:'大连',value:80}],
    139             [{name:'北京'}, {name:'南宁',value:70}],
    140             [{name:'北京'}, {name:'南昌',value:60}],
    141             [{name:'北京'}, {name:'拉萨',value:50}],
    142             [{name:'北京'}, {name:'长春',value:40}],
    143             [{name:'北京'}, {name:'包头',value:30}],
    144             [{name:'北京'}, {name:'重庆',value:20}],
    145             [{name:'北京'}, {name:'常州',value:10}]
    146         ];
    147 
    148         var SHData = [//从上海出发
    149             [{name:'上海'},{name:'包头',value:95}],
    150             [{name:'上海'},{name:'昆明',value:90}],
    151             [{name:'上海'},{name:'广州',value:80}],
    152             [{name:'上海'},{name:'郑州',value:70}],
    153             [{name:'上海'},{name:'长春',value:60}],
    154             [{name:'上海'},{name:'重庆',value:50}],
    155             [{name:'上海'},{name:'长沙',value:40}],
    156             [{name:'上海'},{name:'北京',value:30}],
    157             [{name:'上海'},{name:'丹东',value:20}],
    158             [{name:'上海'},{name:'大连',value:10}]
    159         ];
    160 
    161         var GZData = [//从广州出发
    162             [{name:'广州'},{name:'福州',value:95}],
    163             [{name:'广州'},{name:'太原',value:90}],
    164             [{name:'广州'},{name:'长春',value:80}],
    165             [{name:'广州'},{name:'重庆',value:70}],
    166             [{name:'广州'},{name:'西安',value:60}],
    167             [{name:'广州'},{name:'成都',value:50}],
    168             [{name:'广州'},{name:'常州',value:40}],
    169             [{name:'广州'},{name:'北京',value:30}],
    170             [{name:'广州'},{name:'北海',value:20}],
    171             [{name:'广州'},{name:'海口',value:10}]
    172         ];
    173 //        设计飞机路线,这个数字怎么显示出来的?
    174         var planePath = 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z';
    175         
    176         //这个函数用于取出data中所有数据的起点和终点的坐标
    177         var convertData = function (data) {
    178             var res = [];
    179             for (var i = 0; i < data.length; i++) {
    180                 var dataItem = data[i];
    181                 var fromCoord = geoCoordMap[dataItem[0].name];
    182                 var toCoord = geoCoordMap[dataItem[1].name];
    183                 if (fromCoord && toCoord) {
    184                     res.push([{
    185                         name: dataItem[0].name,
    186                         coord: fromCoord
    187                     }, {
    188                         name: dataItem[1].name,
    189                         coord: toCoord
    190                     }]);
    191                 }
    192             }
    193             return res;
    194         };
    195         
    196         var color = ['#a6c84c', '#ffa022', '#46bee9'];//对应图中三个城市迁徙图的颜色
    197         var series = [];//三个系列图变量,可以push方法将属性添加进series中。
    198         //接下来,先分析第一个系列,即特效点的设置:
    199         [['北京', BJData], ['上海', SHData], ['广州', GZData]].forEach(function (item, i) {
    200             //分别将上述三个item传入function函数,
    201         //并调用function函数,目的是绘制三个城市的迁徙图,BJData,SHData,GZData数据集请查看附录D
    202             series.push({
    203                 name: item[0] + ' Top10',//系列名称
    204                 type: 'lines',//系列使用的图类型
    205                 zlevel: 1,//第一层,图表是有分层的,用于更好展示图表
    206                 effect: {
    207                     show: true,//开启特效,即为图中白色飞点
    208                     period: 6,//特效点飞行的时间
    209                     trailLength: 0.7,//特效点尾部长度
    210                     color: '#fff',//特效颜色,图中为白色
    211                     symbolSize: 3//特效点的大小
    212                 },
    213                 lineStyle: {
    214                     normal: {
    215                         color: color[i],//特效路径的颜色,如果width为0,则不显示
    216                          0,//路径宽度,0则没有显示画出路径
    217                         curveness: 0.2//特效点路径的曲率,值越大,越弯曲
    218                     }
    219                 },
    220                 data: convertData(item[1])//利用函数求出航线起点和终点的坐标,当绘制北京迁徙图时,item[1]即为BJData,
    221             },
    222             //然后分析下第二系列,即飞机飞行路径设置:
    223             {
    224                 name: item[0] + ' Top10',//系列名称
    225                 type: 'lines',//特效线图
    226                 zlevel: 2,//第二层
    227                 effect: {//图中飞机特效的配置
    228                     show: true,//显示特效
    229                     period: 6,//特效动画的时间
    230                     trailLength: 0,// 特效尾迹的长度。取从 0 到 1 的值,数值越大尾迹越长
    231                     symbol: planePath,//飞机图形的路径
    232                     symbolSize: 15//飞机大小
    233                 },
    234                 lineStyle: {//飞机航线风格
    235                     normal: {
    236                         color: color[i],//飞机航线的颜色
    237                          1,//飞机航线的宽度
    238                         opacity: 0.4,//飞机航线透明度,为0时,则不绘制航线
    239                         curveness: 0.2//飞机航线额弯曲程度
    240                     }
    241                 },
    242                 data: convertData(item[1])//数据,即航线的起点和终点的坐标
    243             },
    244             //最后第三个系列为图中涟漪效果的设置,采用带有涟漪特效动画的散点(气泡)图,代码如下:
    245             {
    246                 name: item[0] + ' Top10',//系列名称
    247                 type: 'effectScatter',//系列使用图表类型
    248                 coordinateSystem: 'geo',//系列使用坐标类型,这里没地图坐标
    249                 zlevel: 2,//第二层
    250                 rippleEffect: {
    251                     brushType: 'stroke'//波纹的填充方式,可以设置为’stroke’和‘fill’,’stroke’只是在点外围设置涟漪,’fill’涟漪填充更圆满
    252                 },
    253                 label: {//设置图标说明文字
    254                     normal: {
    255                         show: true,
    256                         position: 'right',//文字在图标右边
    257                         formatter: '{b}'//设置显示的文字,可以设置{a}, {b},{c},分别表示系列名,数据名,数据值
    258                     }
    259                 },
    260                 symbolSize: function (val) {
    261                     return val[2] / 8;//根据每个节点的值,设置涟漪节点的大小
    262                 },
    263                 itemStyle: {
    264                     normal: {
    265                         color: color[i]//设置涟漪节点的颜色
    266                     }
    267                 },
    268                 data: item[1].map(function (dataItem) {//设置数据,即为每个省份的名称+省份坐标+省份的值
    269                     return {
    270                         name: dataItem[1].name,
    271                         //坐标数据geoCoordMap请查看附录C
    272                         value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
    273                     };
    274                 })
    275             });
    276         });
    277 
    278         option = {
    279             backgroundColor: '#404a59',
    280             title : {
    281                 text: '模拟迁徙',
    282                 subtext: '数据纯属虚构',
    283                 left: 'center',
    284                 textStyle : {
    285                     color: '#fff'
    286                 }
    287             },
    288             tooltip : {
    289                 trigger: 'item'
    290             },
    291             legend: {
    292                 orient: 'vertical',
    293                 top: 'bottom',
    294                 left: 'right',
    295                 data:['北京 Top10', '上海 Top10', '广州 Top10'],
    296                 textStyle: {
    297                     color: '#fff'
    298                 },
    299                 selectedMode: 'single'
    300             },
    301             geo: {
    302                 map: 'china',
    303                 label: {
    304                     emphasis: {
    305                         show: false
    306                     }
    307                 },
    308                 roam: true,
    309                 itemStyle: {
    310                     normal: {
    311                         areaColor: '#323c48',
    312                         borderColor: '#404a59'
    313                     },
    314                     emphasis: {
    315                         areaColor: '#2a333d'
    316                     }
    317                 }
    318             },
    319             series: series
    320         };
    321                 //结束
    322         
    323                 // 使用刚指定的配置项和数据显示图表。
    324                  myChart.setOption(option);
    325                 
    326             </script>
    327     </body>
    328 </html>

     疑问:

    var planePath = 'path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z';

    是怎么生成的?

  • 相关阅读:
    [js]vue-router的使用
    [js]递归实现 数组转树形
    [js]vue组件核心
    [js]了解chart绘图
    [js]vue权限控制
    [js]vue显示一个外部链接的组件
    [js]axios使用
    [js]vue中 给router-view 组件的 绑定 key 的原因
    [java]BeanPostProcessor使用及源码
    [java]权限管理
  • 原文地址:https://www.cnblogs.com/hjt-7/p/5622374.html
Copyright © 2011-2022 走看看