ECharts入门(一)

作者: X_smart | 来源:发表于2018-06-15 11:25 被阅读623次

    一、简单入门

    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 会找到两组数据之间的差异然后通过合适的动画去表现数据的变化。

    相关文章

      网友评论

        本文标题:ECharts入门(一)

        本文链接:https://www.haomeiwen.com/subject/kmbpeftx.html