ECharts是一款使用JavaScript实现的开源可视化库,它可以帮助用户在网页中轻松制作各种类型的图表。对于新手来说,ECharts因其易用性和强大的功能而成为图表制作的首选工具。本文将为您提供一份权威的ECharts教程,并包含一些实战案例,帮助您快速掌握ECharts图表制作。

第一节:ECharts基础入门

1.1 ECharts简介

ECharts提供了一系列丰富的图表类型,包括折线图、柱状图、饼图、散点图、地图等。它具有以下特点:

  • 跨平台:支持主流浏览器,包括IE8及以上。
  • 易于使用:提供简单易懂的API,适合各种层次的开发者。
  • 丰富的图表类型:满足不同场景下的可视化需求。

1.2 ECharts环境搭建

要使用ECharts,首先需要在项目中引入ECharts库。以下是两种常见的引入方式:

  • CDN引入:通过CDN链接直接引入ECharts.js文件。

    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
    
  • 本地引入:下载ECharts库并将其放置在项目目录中。

    <script src="path/to/echarts.min.js"></script>
    

1.3 ECharts基本用法

以下是一个简单的ECharts图表示例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>ECharts实例</title>
  <!-- 引入ECharts库 -->
  <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
</head>
<body>
  <!-- 准备一个用于绘制图表的DOM容器 -->
  <div id="main" style="width: 600px;height:400px;"></div>
  <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>
</body>
</html>

第二节:ECharts图表类型详解

2.1 折线图

折线图适用于展示数据的变化趋势。以下是一个折线图示例:

var option = {
  title: {
    text: '折线图示例'
  },
  tooltip: {},
  legend: {
    data:['销量']
  },
  xAxis: {
    data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  },
  yAxis: {},
  series: [{
    name: '销量',
    type: 'line',
    data: [5, 20, 36, 10, 10, 20]
  }]
};

2.2 柱状图

柱状图适用于比较不同类别之间的数据。以下是一个柱状图示例:

var option = {
  title: {
    text: '柱状图示例'
  },
  tooltip: {},
  legend: {
    data:['销量']
  },
  xAxis: {
    data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  },
  yAxis: {},
  series: [{
    name: '销量',
    type: 'bar',
    data: [5, 20, 36, 10, 10, 20]
  }]
};

2.3 饼图

饼图适用于展示各个部分在整体中的占比。以下是一个饼图示例:

var option = {
  title: {
    text: '饼图示例'
  },
  tooltip: {
    trigger: 'item'
  },
  legend: {
    orient: 'vertical',
    left: 'left',
    data: ['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子']
  },
  series: [{
    name: '销量',
    type: 'pie',
    radius: '50%',
    data: [
      {value: 5, name: '衬衫'},
      {value: 20, name: '羊毛衫'},
      {value: 36, name: '雪纺衫'},
      {value: 10, name: '裤子'},
      {value: 10, name: '高跟鞋'},
      {value: 20, name: '袜子'}
    ],
    emphasis: {
      itemStyle: {
        shadowBlur: 10,
        shadowOffsetX: 0,
        shadowColor: 'rgba(0, 0, 0, 0.5)'
      }
    }
  }]
};

2.4 散点图

散点图适用于展示两个变量之间的关系。以下是一个散点图示例:

var option = {
  title: {
    text: '散点图示例'
  },
  tooltip: {},
  legend: {
    data:['销量']
  },
  xAxis: {
    type: 'value'
  },
  yAxis: {
    type: 'value'
  },
  series: [{
    name: '销量',
    type: 'scatter',
    data: [
      [10, 5], [20, 20], [36, 36], [10, 10], [10, 10], [20, 20]
    ]
  }]
};

2.5 地图

地图适用于展示地理空间数据。以下是一个地图示例:

var option = {
  title: {
    text: '地图示例'
  },
  tooltip: {
    trigger: 'item'
  },
  visualMap: {
    min: 0,
    max: 100,
    left: 'left',
    top: 'bottom',
    text: ['高','低'],           // 文本,默认为数值文本
    calculable: true
  },
  series: [
    {
      name: '销量',
      type: 'map',
      mapType: 'china',
      roam: true,
      label: {
        show: true
      },
      data: [
        {name: '北京', value: Math.round(Math.random() * 1000)},
        {name: '天津', value: Math.round(Math.random() * 1000)},
        {name: '上海', value: Math.round(Math.random() * 1000)},
        {name: '重庆', value: Math.round(Math.random() * 1000)},
        {name: '河北', value: Math.round(Math.random() * 1000)},
        {name: '河南', value: Math.round(Math.random() * 1000)},
        {name: '云南', value: Math.round(Math.random() * 1000)},
        {name: '辽宁', value: Math.round(Math.random() * 1000)},
        {name: '黑龙江', value: Math.round(Math.random() * 1000)},
        {name: '湖南', value: Math.round(Math.random() * 1000)},
        {name: '安徽', value: Math.round(Math.random() * 1000)},
        {name: '山东', value: Math.round(Math.random() * 1000)},
        {name: '新疆', value: Math.round(Math.random() * 1000)},
        {name: '江苏', value: Math.round(Math.random() * 1000)},
        {name: '浙江', value: Math.round(Math.random() * 1000)},
        {name: '江西', value: Math.round(Math.random() * 1000)},
        {name: '湖北', value: Math.round(Math.random() * 1000)},
        {name: '广西', value: Math.round(Math.random() * 1000)},
        {name: '甘肃', value: Math.round(Math.random() * 1000)},
        {name: '山西', value: Math.round(Math.random() * 1000)},
        {name: '内蒙古', value: Math.round(Math.random() * 1000)},
        {name: '陕西', value: Math.round(Math.random() * 1000)},
        {name: '吉林', value: Math.round(Math.random() * 1000)},
        {name: '福建', value: Math.round(Math.random() * 1000)},
        {name: '贵州', value: Math.round(Math.random() * 1000)},
        {name: '广东', value: Math.round(Math.random() * 1000)},
        {name: '青海', value: Math.round(Math.random() * 1000)},
        {name: '西藏', value: Math.round(Math.random() * 1000)},
        {name: '四川', value: Math.round(Math.random() * 1000)},
        {name: '宁夏', value: Math.round(Math.random() * 1000)},
        {name: '海南', value: Math.round(Math.random() * 1000)},
        {name: '台湾', value: Math.round(Math.random() * 1000)},
        {name: '香港', value: Math.round(Math.random() * 1000)},
        {name: '澳门', value: Math.round(Math.random() * 1000)}
      ]
    }
  ]
};

第三节:ECharts实战案例

3.1 制作动态折线图

以下是一个动态折线图案例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>动态折线图案例</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
</head>
<body>
  <div id="main" style="width: 600px;height:400px;"></div>
  <script type="text/javascript">
    var myChart = echarts.init(document.getElementById('main'));
    var option = {
      title: {
        text: '动态折线图案例'
      },
      tooltip: {},
      legend: {
        data:['销量']
      },
      xAxis: {
        data: []
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'line',
        data: []
      }]
    };
    myChart.setOption(option);

    // 动态添加数据
    function addData() {
      var data = [Math.round(Math.random() * 100)];
      myChart.setOption({
        xAxis: {
          data: myChart.getOption().xAxis.data.concat(data)
        },
        series: [{
          data: myChart.getOption().series[0].data.concat(data)
        }]
      });
    }

    // 每1秒添加一次数据
    setInterval(addData, 1000);
  </script>
</body>
</html>

3.2 制作多图表页面

以下是一个多图表页面案例:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>多图表页面案例</title>
  <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
</head>
<body>
  <div id="main1" style="width: 600px;height:400px;"></div>
  <div id="main2" style="width: 600px;height:400px;"></div>
  <script type="text/javascript">
    var myChart1 = echarts.init(document.getElementById('main1'));
    var myChart2 = echarts.init(document.getElementById('main2'));

    var option1 = {
      title: {
        text: '折线图'
      },
      tooltip: {},
      legend: {
        data:['销量']
      },
      xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
      },
      yAxis: {},
      series: [{
        name: '销量',
        type: 'line',
        data: [5, 20, 36, 10, 10, 20]
      }]
    };
    myChart1.setOption(option1);

    var option2 = {
      title: {
        text: '饼图'
      },
      tooltip: {
        trigger: 'item'
      },
      legend: {
        orient: 'vertical',
        left: 'left',
        data: ['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子']
      },
      series: [{
        name: '销量',
        type: 'pie',
        radius: '50%',
        data: [
          {value: 5, name: '衬衫'},
          {value: 20, name: '羊毛衫'},
          {value: 36, name: '雪纺衫'},
          {value: 10, name: '裤子'},
          {value: 10, name: '高跟鞋'},
          {value: 20, name: '袜子'}
        ]
      }]
    };
    myChart2.setOption(option2);
  </script>
</body>
</html>

第四节:总结

通过本文的学习,相信您已经对ECharts有了初步的了解,并能够制作一些简单的图表。在实际应用中,ECharts提供了更多高级功能和配置选项,您可以根据自己的需求进行探索和实践。希望本文能帮助您在图表制作的道路上越走越远!