目录
3、methods方法下写setOptioin(option)
整篇文章将通过实例讲述ECharts的基本使用
官网:快速上手 - Handbook - Apache ECharts
npm install echarts --save
(1)在views文件夹下=》创建echarts=》创建LineView.vue文件
(2)在views文件夹下=》创建IndexView.vue【用于所有图片的展示】

- //5.0以上版本
- import * as echarts from 'echarts'
- //5.0以下
- import echarts from 'echarts'
(1)获取dom元素
const dom = document.getElementById('')
(2)初始化表
this.chart = echarts.init(dom)
(3)配置项单独封装出去
this.setOptions()
(1)option的定义
- const option = {
- xAxis: {
- type: "category",
- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
- },
- yAxis: {
- type: "value",
- },
- series: [
- {
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "line",
- },
- ],
- };
(2)option的作用
- //作用:保证两样都有执行
- option && this.chart.setOption(option)
属于dom渲染,根据生命周期,要在mounted()调用
- mounted() {
- this.init()
- },
- <div>
- <div id="line">div>
- div>
-
- <script>
- import * as echarts from "echarts";
-
- export default {
- name: "LineView",
-
- data() {
- return {};
- },
-
- mounted() {
- this.init();
- },
-
- methods: {
- init() {
- // 获取dom元素
- var dom = document.getElementById("line");
- // 初始化表
- this.chart = echarts.init(dom);
- // 设置配置项
- this.setOptions();
- },
- setOptions() {
- const option = {
- xAxis: {
- type: "category",
- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
- },
- yAxis: {
- type: "value",
- },
- series: [
- {
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "line",
- },
- ],
- };
-
- option && this.chart.setOption(option);
- },
- },
- };
- script>
-
- <style lang="scss" scoped>
- #line {
- width: 500px;
- height: 500px;
- }
- style>
import lineView from './echarts/lineView.vue';
- components:{
- lineView
- },
- <div class="index">
-
- <div class="line">
- <lineView>lineView>
- div>
- div>
- .index {
- width: 100%;
- height: 100%;
- .line {
- width: 500px;
- height: 500px;
- }
- }

(1)折线图、柱状图
- series: [
- {
- data: [150, 230, 224, 218, 135, 147, 260],//数据
- type: "line",//折线图
- smooth: true,//平滑
- },
- {
- data: [50, 30, 24, 18, 35, 147, 260],
- type: "line",//折线图
- },
- {
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "bar",//柱状图
- },
- ],

(2)饼图
IndexView.vue
- <div>
- <div class="index">
-
- <div class="line">
- <lineView>lineView>
- div>
-
- <div class="pie">
- <pieView>pieView>
- div>
- div>
- div>
-
- <script>
- import lineView from "./echarts/lineView.vue";
- import pieView from "./echarts/PieView.vue";
-
- export default {
- name: "IndexView",
-
- components: {
- lineView,
- pieView,
- },
-
- data() {
- return {};
- },
-
- mounted() {},
-
- methods: {},
- };
- script>
-
- <style lang="scss" scoped>
- .index {
- width: 100%;
- height: 100%;
- display: flex;
- .line {
- width: 500px;
- height: 500px;
- }
- .pie {
- width: 500px;
- height: 500px;
- }
- }
- style>
PieView.vue
- <div>
- <div id="PiePage">div>
- div>
-
- <script>
- import * as echarts from "echarts";
-
- export default {
- name: "PieView",
-
- data() {
- return {};
- },
-
- mounted() {
- this.init();
- },
-
- methods: {
- init() {
- // 获取dom元素
- var dom = document.getElementById("PiePage");
- // 初始化表
- this.chart = echarts.init(dom);
- // 设置配置项
- this.setOptions();
- },
- setOptions() {
- const option = {
- title: {
- text: "饼状图",
- subtext: "Fake Data",
- left: "center",
- },
- tooltip: {
- trigger: "item",
- },
- legend: {
- orient: "vertical",
- left: "left",
- },
- series: [
- {
- name: "Access From",
- type: "pie",
- radius: '50%', //饼状大小
- data: [
- //数据
- { value: 1048, name: "Search Engine" },
- { value: 735, name: "Direct" },
- { value: 580, name: "Email" },
- { value: 484, name: "Union Ads" },
- { value: 300, name: "Video Ads" },
- ],
- emphasis: {
- //高亮状态
- itemStyle: {
- //样式
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: "rgba(0, 0, 0, 0.5)",
- },
- },
- },
- ],
- };
-
- option && this.chart.setOption(option);
- },
- },
- };
- script>
-
- <style lang="scss" scoped>
- #PiePage {
- width: 500px;
- height: 500px;
- }
- style>

①通过radius指定外半径、内半径
- series: [
- {
- name: "Access From",
- type: "pie",
- radius: ['20%','50%'],//[内半径, 外半径]
- data: [
- { value: 1048, name: "Search Engine" },
- { value: 735, name: "Direct" },
- { value: 580, name: "Email" },
- { value: 484, name: "Union Ads" },
- { value: 300, name: "Video Ads" },
- ],
- emphasis: {
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: "rgba(0, 0, 0, 0.5)",
- },
- },
- },
- ],
②文本标签
- const option = {
- title: {
- text: "饼状图",
- subtext: "Fake Data",
- left: "center",
- },
- tooltip: {
- trigger: "item",
- },
- legend: {
- orient: "vertical",
- left: "left",
- },
- series: [
- {
- name: "Access From",
- type: "pie",
- radius: ["20%", "50%"], //[内半径, 外半径]
- data: [
- //数据
- { value: 1048, name: "Search Engine" },
- { value: 735, name: "Direct" },
- { value: 580, name: "Email" },
- { value: 484, name: "Union Ads" },
- { value: 300, name: "Video Ads" },
- ],
- label:{
- show:true,
- position:'center'
- },
- emphasis: {
- //高亮状态
- itemStyle: {
- //样式
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: "rgba(0, 0, 0, 0.5)",
- },
- },
- },
- ],
- };

③emphasis高亮状态
- const option = {
- title: {
- text: "饼状图",
- subtext: "Fake Data",
- left: "center",
- },
- tooltip: {
- trigger: "item",
- },
- legend: {
- orient: "vertical",
- left: "left",
- },
- series: [
- {
- name: "Access From",
- type: "pie",
- radius: ["20%", "50%"], //[内半径, 外半径]
- data: [
- //数据
- { value: 1048, name: "Search Engine" },
- { value: 735, name: "Direct" },
- { value: 580, name: "Email" },
- { value: 484, name: "Union Ads" },
- { value: 300, name: "Video Ads" },
- ],
- label:{
- show:false,
- position:'center'
- },
- //高亮状态
- emphasis: {
- //文字样式
- label:{
- show:true,
- fontSize:20,
- fontWeight:'bold'
- },
- //样式
- itemStyle: {
- shadowBlur: 10,
- shadowOffsetX: 0,
- shadowColor: "rgba(0, 0, 0, 0.5)",
- },
- },
- },
- ],
- };

- const option = {
- title:{
- text:'统计图',
- link:'https://www.baidu.com/',//跳转路径
- target:'blank',//在新页面打开
- textStyle:{
- color:"blue",
- fontSize:'26',
- fontWeight:"bold",
- },
- left:'center',
- },
- xAxis: {
- type: "category",
- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
- },
- yAxis: {
- type: "value",
- },
- series: [
- {
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "line", //折线图
- },
- {
- data: [50, 30, 24, 18, 35, 147, 260],
- type: "line", //折线图
- },
- {
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "bar", //柱状图
- },
- ],
- };

- const option = {
- title:{
- text:'统计图',
- link:'https://www.baidu.com/',//跳转路径
- target:'blank',//在新页面打开
- textStyle:{
- color:"blue",
- fontSize:'26',
- fontWeight:"bold",
- },
- left:'center',
- },
- legend: {
- data: ['1', '2', '3'],//对应的系列
- left:'right',
- },
- xAxis: {
- type: "category",
- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
- },
- yAxis: {
- type: "value",
- },
- series: [
- {
- name:'1',//对应图例
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "line", //折线图
- },
- {
- name:'2',
- data: [50, 30, 24, 18, 35, 147, 260],
- type: "line", //折线图
- },
- {
- name:'3',
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "bar", //柱状图
- },
- ],
- };

- const option = {
- title:{
- text:'统计图',
- link:'https://www.baidu.com/',//跳转路径
- target:'blank',//在新页面打开
- textStyle:{
- color:"blue",
- fontSize:'26',
- fontWeight:"bold",
- },
- left:'center',
- },
- legend: {
- data: ['1', '2', '3'],//对应的系列
- left:'right',
- },
- tooltip:{
- show:true,//展示
- trigger:'axis',//同时显示三种数据,方便对比
- },
- xAxis: {
- type: "category",
- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
- },
- yAxis: {
- type: "value",
- },
- series: [
- {
- name:'1',//对应图例
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "line", //折线图
- },
- {
- name:'2',
- data: [50, 30, 24, 18, 35, 147, 260],
- type: "line", //折线图
- },
- {
- name:'3',
- data: [150, 230, 224, 218, 135, 147, 260],
- type: "bar", //柱状图
- },
- ],
- };

(1)获取JSON格式地图信息文档

(3)放入静态文件夹assets中

(4)引入、注册地图
- <div>
- <div id="MapPage">div>
- div>
-
- <script>
- import * as echarts from 'echarts';
- // 引入
- import map from "@/assets/福建省.json";
-
- export default {
- name: 'ThreeTwoMapView',
-
- data() {
- return {
-
- };
- },
-
- mounted() {
-
- },
-
- methods: {
- init(){
- const dom = document.getElementById('MapPage')
- this.chart = echarts.init(dom)
- // 注册地图
- echarts.registerMap('Fujian',map)
- // 设置配置项
- this.setOption()
- },
- setOption(){
- const option = {
-
- }
-
- option && this.chart.setOption(option);
- }
- },
- };
- script>
-
- <style lang="scss" scoped>
- #MapPage{
- width: 500px;
- height: 500px;
- }
- style>
- setOption(){
- const option = {
- series:[
- {
- name:'福建省',
- type:"map",
- map:'Fujian',
- }
- ]
- }
-
- option && this.chart.setOption(option);
- }

(1)roam鼠标拖拽缩放、偏移
- const option = {
- series:[
- {
- name:'福建省',
- type:"map",
- map:'Fujian',
- roam:true,
- }
- ]
- }
(2)scaleLimit缩放限制
- const option = {
- series: [
- {
- name: "福建省",
- type: "map",
- map: "Fujian",
- roam: true,//是否可缩放、偏移
- zoom:0.5,//初始缩放比例
- scaleLimit:{//缩放限制
- min:0.5,
- max:10,
- }
- },
- ],
- };
(3)itemStyle图形样式
- const option = {
- series: [
- {
- name: "福建省",
- type: "map",
- map: "Fujian",
- roam: true,//是否可缩放、偏移
- zoom:0.5,//初始缩放比例
- scaleLimit:{//缩放限制
- min:0.5,
- max:10,
- },
- // 文本标签
- label:{
- show:true,
- color:"#0000ff"
- },
- // 图形样式
- itemStyle:{
- areaColor:"#00ffff",//区域颜色
- borderColor:'black',//描边颜色
- shadowColor:'rgba(0,0,0,0.5)',//阴影颜色
- shadowBlur:10,//阴影的模糊大小
- }
- },
- ],
- };

(4)emphasis高亮
- const option = {
- series: [
- {
- name: "福建省",
- type: "map",
- map: "Fujian",
- roam: true,//是否可缩放、偏移
- zoom:0.5,//初始缩放比例
- scaleLimit:{//缩放限制
- min:0.5,
- max:10,
- },
- // 文本标签
- label:{
- show:true,
- color:"#0000ff"
- },
- // 图形样式
- itemStyle:{
- areaColor:"#00ffff",//区域颜色
- borderColor:'black',//描边颜色
- shadowColor:'rgba(255,0,0,0.5)',//阴影颜色
- shadowBlur:10,//阴影的模糊大小
- },
- // 高亮
- emphasis:{
- label:{
- show:true,
- color:'#fff'
- },
- // 图形样式
- itemStyle:{
- areaColor:"#000",//区域颜色
- borderColor:'black',//描边颜色
- },
- }
- },
- ],
- };

(5)选中
- // 选中
- select:{
- label:{
- show:true,
- color:'#fff'
- },
- // 图形样式
- itemStyle:{
- areaColor:"#0f0",//区域颜色
- borderColor:'black',//描边颜色
- },
- },

- init() {
- const dom = document.getElementById("MapPage");
- this.chart = echarts.init(dom);
- // 注册地图
- echarts.registerMap("Fujian", map);
- // 点击
- this.chart.on("click", (params) => {
- console.log(params);
- });
- // 设置配置项
- this.setOption();
- },

当data数据是动态的,在created的dom还没有渲染时,异步获取数据,发现图并不能绘制成功
- export default {
- name: "LineView",
-
- data() {
- return {
- arr:[],//动态数据
- };
- },
-
- created(){
- // dom还没有渲染
- this.arrApi()
- },
-
- mounted() {
- this.init();
- },
-
- methods: {
- init() {
- // 获取dom元素
- var dom = document.getElementById("line");
- // 初始化表
- this.chart = echarts.init(dom);
- // 设置配置项
- this.setOptions();
- },
- setOptions() {
- const option = {
- title: {
- text: "统计图",
- link: "https://www.baidu.com/", //跳转路径
- target: "blank", //在新页面打开
- textStyle: {
- color: "blue",
- fontSize: "26",
- fontWeight: "bold",
- },
- left: "center",
- },
- legend: {
- data: ["1", "2", "3"], //对应的系列
- left: "right",
- },
- tooltip: {
- show: true, //展示
- trigger: "axis", //同时显示三种数据,方便对比
- },
- xAxis: {
- type: "category",
- data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
- },
- yAxis: {
- type: "value",
- },
- series: [
- {
- name: "1", //对应图例
- data: this.arr,
- type: "line", //折线图
- },
- ],
- };
-
- option && this.chart.setOption(option);
- },
- // 模拟异步请求获取数据
- arrApi(){
- setTimeout(()=>{
- this.arr = [50, 30, 24, 18, 35, 147, 260]
- })
- }
- },
- };

监听数据变化时,再次绘制即可
- // 监听数据变化
- watch:{
- arr:{
- handler(newV,oldV){
- console.log(newV,oldV);
- this.setOptions()//再次调用配置项
- }
- }
- },
