Echarts使用(vue)

Echarts常用配置项
1.配置项解读(整体)

option = {
  //标题:包括主标题和副标题
  title:{},
  //图例设置
  legend: {},
  //提示内容:可定制内容和样式
  tooltip: {},
  //系列数据:可以包含不同类目的数据集合,每个数据集合可以设置数据标题、tooltip、展示方式(如柱状、折线等)
  series:[{name:'',data:'',tooltip:'',type:''},{},{}]
 
  //声明一个类目轴:x轴(可定义type类型,label轴标题)
  xAxis: { type: 'category' },
  //声明数值轴:y轴
  yAxis: {},
  //系列
  series: [{ type: 'bar' }, { type: 'bar' }, { type: 'bar' }]
};

2.常规配置项完善

//案例一:主要列举xAixs(x轴)和yAxis(y轴)以及series配置(系列:即图表展示的数据组,可以有多组数据以展示为混合图表)
var option = {
        title: {},
        tooltip: {},
        grid: {
          x: 30,
          y: 35,
          x2: 20,
          y2: 30,
          borderWidth: 1,
        },
        xAxis: {
          axisTick: {
            show: false,
          },
          axisLabel: {
            textStyle: {
              show: true,
              color: "#bbb",
              fontSize: "14",
            },
          },
          data: xData,
          axisLabel: {
            show: true,
            interval: 0, //使x轴上的文字显示完全,
            formatter: function (params) {
              var newParamsName = "";
              var paramsNameNumber = params.length;
              var provideNumber = 4;
              var rowNumber = Math.ceil(paramsNameNumber / provideNumber);
              if (paramsNameNumber > provideNumber) {
                for (var p = 0; p < rowNumber; p++) {
                  var tempStr = "";
                  var start = p * provideNumber;
                  var end = start + provideNumber;
                  if (p == rowNumber - 1) {
                    tempStr = params.substring(start, paramsNameNumber);
                  } else {
                    tempStr = params.substring(start, end) + "\n";
                  }
                  newParamsName += tempStr;
                }
              } else {
                newParamsName = params;
              }
              return newParamsName;
            },
          },
          // splitLine: {
          //   show: false
          // }
        },
        yAxis: {
          axisTick: {
            show: false,
          },
          axisLine: {
            show: true,
            // lineStyle:{
            //   color:'#ccc'
            // }
          },
          axisLabel: {
            textStyle: {
              show: true,
              color: "#333",
              fontSize: "12",
            },
          },
        },
        series: [
          {
            type: "bar",
            data: yData,
            barWidth: 35, //柱图宽度
            itemStyle: {
              //上方显示数值
              normal: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  { offset: 0, color: '#2867FA' },
                  // { offset: 0.5, color: '#188df0' },
                  { offset: 1, color: '#4AA1FC' }
                ]),
                label: {
                  show: true,
                  position: 'top',
                  textStyle:{
                    color:'#4AA1FC'
                  }
                },
              },
            },
          },
        ],
      };


//案例二:主要列举xAixs(x轴)和yAxis(y轴)以及series配置(系列:即图表展示的数据组,可以有多组数据以展示为混合图表)
var option = {
	title:{},
	tooltip:{},
	grid:{
	},
	//x轴配置常规包括:是否显示分割/x轴上文字配置/x轴数据
	xAxis:{
		axiosTick:{
			show:false
		},
		axiosLabel:{
			show:true,
			interval:0,
			formatter:function(params){
				return someting...
			},
			textStyle:{
				show:true,
				color:xxx,
				fontSize:xxx,
			}
		},
		data:this.xData,
	},
	//y轴常规配置包括:除了和x轴相同的配置以外,y轴默认时不显示竖线条的,需要设置axisLine;另外y轴数据(作为值轴时)通过series配置
	//另外还有一个分隔线属性splitLine,由于配置显示的横向网格线是虚线还是实线
	yAxis:{
		axisLine:{
			show:true,
		},
		......
		......
		......
		splitLine :{
          lineStyle:{
              type:'dashed'//虚线
          },
          show: true //是否显示
        }
		//无data配置
	},
	//系列配置及值显示配置,可以设置某个系列值的显示类型:bar/line/等,配置该系列值的值块是否有数字进行标注显示
	//itemStyle是指你可以对每一项(即柱状图的柱子,折线图的线条,饼图的区域块)进行样式配置,下边的normal指的是正常情况下样式配置,对应的有个emphesis,就是鼠标移到该项时(即强调)的样式配置,empesis正常情况可以不写,除非想定制
	series:[
		{type:"bar",data:this.yData,barWidth:35,
			itemStyle:{
				//每个item项上方显示数值(使用bar/饼图/折线图情况)
				normal:{
					color:[],
					label:{show:true, positon:'top',textStyle:{color:'black'}}
				},
				//emphsis:{}
			}
		},
	]
}

3.配置项解读

//grid属性用于配置图表距离容器左/上/右/下的边距间隔,可以实现图表位置和大小的调整,也可以进行网格线的样式配置
 grid: {
   x: 130,
   y: 35,
   x2: 20,
   y2: 30,
   borderWidth: 1,
 },
 //图例属性legend:可以配置位置,排列方式:水平/垂直,图例图形宽高/颜色,图例文字通过formatter进行定制,图例溢出滚动显示
 legend:{
 	orient:'verticail',
 	x:"right",
 	y:"center",
 	itemHeight: 12,
    itemWidth:12,
    type: 'scroll',
    itemGap: 2,
    //回调自定义显示每个图例的文字内容
    formatter:(name)=>{
       let data = option.series[0].data;
        console.log(data);
        let total =0;
        let tarValue;
        for(let i=0;i<data.length;i++){
          total+=data[i].value
          if(data[i].name == name){
            tarValue = data[i].value;
          }
        }
        // let v = tarValue
        let p =Math.round((tarValue/total)*100)
        return ` ${name}:${p}%`
    }
 },
 //标题配置:可配主标题/副标题的文本,位置,文本样式,主副标题间隔
 title:{
 	show:true,
 	text:'xxx',
 	left:'center',
 	top:'center',
 	textStyle:{
 		color:'black',
 	},
 	itemGap: 2,
 	
 },

title常规配置

 title:{
   	  text: "组标题",
   	  subtext:"副标题",
   	  itemGap:10,
      top:'15%',
      left: '55%',
      textStyle: {
        fontSize: 14,
        align: "left",
        color: "#1b83cb",
      },
      subtextStyle:{
      },
      textAlign:"center",
      //borderColor: '',     // 标题边框颜色
  	  //borderWidth: 1,    // 边框宽度(默认单位px)
},

legend图例常规配置

legend: {
	orient:"vertical",
   	left: '10%',  //图例距离左的距离,用 x: 替换也可
   	top: 'center',  //图例上下居中,用 y: 替换也可
   	itemHeight:10,
   	itemWidth:10,
   	textStyle:{
   		font-size:10,
   	}
	type:"scroll",
	formatter:()=>{}  
 },

常规需求

1.echarts图表自适应解决方法:

//初始化图表实例
const chartDom = document.getElementById('myChart');
let myChart = echarts.init(chartDom);
// 方法一:监听窗口大小变化事件,若dom尺寸变化,则resize
const chartObserver = new ResizeObserver(() => {
    myChart.resize();
});
chartObserver.observe(chartDom);

//方法二:窗口变化的钩子中调用resize方法
window.onresize = () => {
    myChart.resize();
}

2.x轴上文字过长显示不全的解决方法(设置文字显示倾斜)

//使用xAxis属性axisLabel设置倾斜,interval用于设置x轴上每个类目的间隔,rotate倾斜角度
axisLabel: {
	interval:0,
	rotate:40 
}

3.监听某个轴或者点的点击事件
4.自定义tooltip或者legend、自定义图表的图形

let options = {
    tooltip: {
        formatter: function (params) {
            return params.marker + params.name + ': ' + (params.value[3]) + ' 小时' ;
        }
    },
}

5.多条x轴/y轴,折线与柱状图混合等

小结:
轴线通过(axisLine/splitLine)通过属性lineStyle设置
文字通过textStyle
图例/系列通过itemStyle
itemGap用于图例,标题,

6.关于dataset数据集的理解

1)dataset数据集的存在是为了将图表的数据与属性配置部分剥离开来,方便数据的复用,通过映射的方式实现将数据项映射到对应系列中。
(2)dimension维度可以直接通过dimension指定声明,也可以将source节点的第一行作为维度声明
(3)一个完整的系列被认为是一个维度,维度内的每一项被称为数据项

7.Echart中tooltip等选项的文字显示换行语法模板

label: {
  formatter: function(value) {
    let str = ''
    const num = 6// 每行显示字数
    const valLength = value.length// 该项x轴字数
    const rowNum = Math.ceil(valLength / num)// 行数

    if (rowNum > 1) {
      for (let i = 0; i < rowNum; i++) {
        let temp = ''
        let start = i * num
        let end = start + num

        temp = value.substring(start, end) + '\n'
        str += temp
      }
      return str
    } else {
      return value
    }
  }
},
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值