vue echart使用总结

vue请求映射数据接口实例:

<template>
  <div ref="myEchart">
  </div>
</template>
<script>
import echarts from 'echarts'
export default {
  name: 'payEchart',
  data () {
    return {
      chart: null,
      dataList: [],
      dateStr: []
    }
  },
  mounted () {
  },
  beforeDestroy () {
    if (!this.chart) {
      return
    }
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    initChart () {
      this.chart = echarts.init(this.$refs.myEchart)
      // 把配置和数据放这里
      this.chart.setOption({
        title: {
          text: 'echart图标题',
          subtext: '单位(--)',
          textStyle: {
            fontSize: 14
          }
        },
        tooltip: {
          trigger: 'axis'
        },
        legend: {
          data: ['最高温度', '最低温度']
        },
        toolbox: {
          show: true,
          feature: {
            dataZoom: {
              yAxisIndex: 'none'
            },
            dataView: {readOnly: false},
            magicType: {type: ['line', 'bar']},
            restore: {},
            saveAsImage: {}
          }
        },
        xAxis: {
          type: 'category',
          boundaryGap: false,
          data: this.dateStr
        },
        yAxis: {
          type: 'value',
          minInterval: 1,
          boundaryGap: [ 0, 0.1 ]
        },
        grid: {
           '80%'
        },
        series: this.dataList
      })
    },
    queryData() {
      this.$api.queryData().then(res => {
        if (res.meta.success) {
          this.dataList = res.data.dataList
          this.dateStr = res.data.dateStr
          this.$nextTick(() => { this.initChart() }) ////异步更新队列,回调函数在 DOM 更新完成后就会调用
        } else {
          this.$Message.error(res.meta.message)
        }
      }).catch(err => {
        this.$Modal.error({
          title: '查询后端接口',
          content: err
        })
      })
    }
  },
  created () {
    this.queryData()
  }
}
</script>

一、修改主标题和副标题

title : {
text: '未来一周气温变化', //写入主标题
subtext: '纯属虚构', //写入副标题
x:'left',//控制标题水平方向的位置'center' | 'left' | 'right' | {number}
y:'top',//控制标题垂直方向的位置'top' | 'bottom' | 'center' | {number}
textStyle:{
fontSize: 18,
fontWeight: 'bolder',
color: '#333'
}, //标题字体样式
subtextStyle{
fontSize: 18,
fontWeight: 'bolder',
color: '#333'
}, //副标题字体样式
},

二、修改统计图的宽和高,以及位置和最外面的边框

grid:{
x:'10%',//控制统计图左上角的x坐标位置,可为数值单位是px,可用百分比
y:'10%',//控制统计图左上角y坐标的位置,可为数值单位是px,可用百分比
'80%',//控制统计图的宽度
height:'90%',//控制统计图的高度
borderWidth:0,//控制边框的线条粗细,为0则不显示
borderColor:'#ccc'//修改边框的线条颜色,如果borderWidth为0则不起作用
},

三、x轴的样式控制(y轴同上)

xAxis : [
{
type : 'category',//坐标轴类型,横轴默认为类目型'category',纵轴默认为数值型'value'
data: ['A栋', 'B栋', 'C栋', 'D栋', 'E栋', 'F栋'],//x坐标轴上显示的数据
boundaryGap:true,//控制x轴的数值是否顶头,默认为true留空,false则顶头
splitLine: {//控制网格的线条样式
show:true,
lineStyle:{
color: '#48b',
2,
type: 'solid'
}
},
axisLine:{//x轴的样式控制
show: true, //显示与否
lineStyle:{//线条样式
color: '#48b',
2,
type: 'solid'
}
},

axisTick:{//控制x轴上的间隔突出的小线条样式
show:'true',//显示与否
lineStyle:{//线条样式
color: '#48b',
2,
type: 'solid'
}
},
axisLabel: {//控制x轴上的文字的样式
show: true,//显示与否
textStyle: { color: '#fff' },//控制x轴字体样式
formatter: '{value} °C',//轴上的数据带单位
}
}
],

四、鼠标移动到数据上线条的样式控制

1. 鼠标移动到数据上出现线条的样式控制

tooltip : {
  trigger: 'axis',
  axisPointer:{
    type: 'line',
    lineStyle: {
      color: '#929bb6',
       1,
      type: 'solid'
    }
  }
},

2. 鼠标移动到数据上不出现线条出现阴影

tooltip: {
  show: true,
  trigger: 'axis',
  axisPointer:{
    type: 'shadow',
    shadowStyle: {
      color: 'rgba(88,101,137,0.3)',
       'auto',
      type: 'default'
    }
  } 
},

五、增加两条y轴,并且指定哪个个数据使用哪个y轴

yAxis : [
{
type : 'value',
splitNumber: 5, // 数值轴用,分割段数,默认为5
boundaryGap:[0,0],
splitLine:{lineStyle:{color:'#505a73'}},
axisLine:{show: false},
axisLabel: { show: true, textStyle: { color: '#fff' },formatter: '{value} ' }
},
{
type : 'value',
splitNumber: 5, // 数值轴用,分割段数,默认为5
boundaryGap:[0,0],
axisLine:{show: false},
splitLine:{lineStyle:{color:'#505a73'}},
axisLabel: { show: true, textStyle: { color: '#fff' },formatter: '{value} '},
show:'true',
position: 'right',//控制新y轴的位置
}
],
series : [
{
"name":"移动到达数",
"type":"bar",
"yAxisIndex":'1',//使用第二条y轴
"data":[5, 20, 40, 10, 10, 20,5, 20, 40, 10, 10, 20]
},
{
"name":"移动收入(万元)",
"type":"bar",
"yAxisIndex":'0',//指定第一条y轴,默认都为使用第一条
"data":[1.55, 2.90, 1.70, 9.10, 8.10, 1.90,5, 2.50, 4.30, 1.40, 1.10, 2.60]
}
]

六、折线图上显示最大值最小值

series: [
  {
    name: '', // 系列名称
    type: 'line', // 图表类型,折线图line、散点图scatter、柱状图bar、饼图pie、雷达图radar
    data: [18.618, 18.386, 18.961, 18.825, 18.643, 19.04],
    symbolSize:6,//控制折线图上表示数值的图标的大小
    symbol:'emptyCircle',//控制折线图上表示数值的样式
    itemStyle: {
      normal: {
        lineStyle: {
          color: '#8a92ad',
        }
      }
    },
    markPoint : {
      data : [
        {type : 'max', name: '最大值'},
        {type : 'min', name: '最小值'}
      ]
    }
  }
]

七、图例的样式控制

legend: {
  data:['宽带净增','渗透率'],
    x:'right',//控制图例的位置
    y:20,//控制图例的位置
    textStyle: {// 图例文字样式
    color: '#fff', // 图例文字颜色
      fontSize:14
  }
},

八、轴上的数据太长,换行显示

xAxis: [ // 直角坐标系中横轴数组
  {
// boundaryGap : false,
    type: 'category', // 坐标轴类型,横轴默认为类目轴,数值轴则参考yAxis说明
    data: ['福田区', '南山区', '罗湖区', '宝安区', '龙岗区', '坪大区', '龙华区', '光明区', '盐田区','蛇口通讯'],//轴上数据
    axisLine:{show: false},//x轴
    splitLine:{lineStyle:{color:'#505a73'}},//网格颜色 
    axisLabel: { show: true, textStyle: { color: '#BEC5D6' },
      interval : 0,
      formatter : function(params){//控制轴上数据换行显示
        var newParamsName = "";
        var paramsNameNumber = params.length;
        var provideNumber = 2;
        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) + "
";
            }
            newParamsName += tempStr;
          }
        } else {
          newParamsName = params;
        }
        return newParamsName
      }
    }, //轴上字体颜色
    axisTick:{show:false},
  }
]

九、easyui里面的tab使用统计图,统计图宽度无法自适应

//解决tab里面统计图不按照div的百分百的宽度显示,overDetailFlowPack无法自适应的div的id
$("#overDetailFlowPack").css( 'width', $("#overDetailFlowPack").width() );

十、echart中统计图表被压缩不能正常地自适应

(1)x轴数据为数组['array1'],如果赋值为字符串'array1',就会出现统计图不能正常展开的情况。

(2)使用jqueryEasyUi,tab切换显示不同的统计图,也会出现统计图被挤压变形的情况,解决方法是用js获取容器的宽度赋值给容器。

(3)在需要显示隐藏的模块中,一开始隐藏,点击显示的时候会看到统计图被挤压变形,此时,需要在点击显示模块的时候重新加载一次统计图便可以正常显示。

十一、统计图上每个点都显示对应的数据

series : [
  {
    name:'视频用户(万)',
    type:'bar',
    itemStyle : { normal: {label : {show: true}}},//控制统计图上显示数据
    data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6,162.2, 32.6, 20.0, 6.4, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
  },
  {
    name:'视频用户渗透率',
    type:'line',
    yAxisIndex: 1,
    itemStyle : { normal: {label : {show: true,formatter:function(p){return p.value > 0 ? (p.value +'%'):'';}}}},//控制显示的数据为百分比数值
    markLine : {
      data : [
        {type : 'average', name: '平均值'}//显示平均值水平线
      ]
    },
    data:[2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4,23.0, 16.5, 12.0, 6.2, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5,12.0, 6.2]
  }
]
原文地址:https://www.cnblogs.com/cuixiaozhen/p/9817893.html