vue echarts 三维折线图

效果图:
在这里插入图片描述

<template>
  <div  id="main" style="width: 900px;height: 600px"></div>
</template>

<script>
import * as echarts from 'echarts';
import 'echarts-gl'
export default {
  name: "hello",
  mounted() {
   this.drewLine()
  },
  methods:{
    drewLine(){
      let data = [
        [0,0,0,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1],
        [0,0,1,1,5,7,9,11,12,13,17,17, 17,17,17,17,17,17,17,17,17,17],
        [5,6,9,9,9,11,11,11,13,13,14,14, 14,16,16,16,16,16,18,18,18,18],
        [13,17,22,22,26,33,34,36,36, 37,39,40,40,42,42,42,43,43,44,44,44,44],
        [13,16,17,27,35,45, 49,53,58,61,65,66,68, 69,71,73,73,73,74,74,74,74]
      ]
      let dataX = ['1/27', '1/28','1/29','1/30','1/31','2/1','2/2','2/3','2/4','2/5','2/6','2/7','2/8','2/9','2/10','2/11','2/12','2/13','2/14','2/15','2/16','2/17']
      let dataY = ['生产','收购','运输','销售','消费']
      var vdata = []
      for (var i=0;i<dataY.length;i++){
        vdata[i] = []
      }
      for(var t=0;t<dataY.length;t++){
        var y = dataY[t];
        for(var k=0;k<data[0].length;k++){
          for(var p=0;p<dataX.length;p++){
            var x = dataX[p];
            var z = data[t][p];
            vdata[t].push([x,y,z]);
          }
          break;
        }
      }
      var chart = echarts.init(document.getElementById('main'));
      chart.setOption({
        xAxis3D: {
          type: 'category',
          name: '',
          data: dataX,
          axisLabel:{
            show: true,
            interval: 0  //使x轴都显示
          }
        },
        yAxis3D: {
          type: 'category',
          name: '',
          data: dataY,
          axisLabel:{
            show: true,
            interval: 0   //使y轴都显示
          }
        },
        zAxis3D: {
          type: 'value',
          name: ''
        },
        //图例
        legend: {
          orient: 'vertical',
          right: 50,
          top: 200,
          icon: 'roundRect',
          textStyle:{
            color: '#2c3e50'
          }
        },
        tooltip:{
          show:true
        },
        grid3D: {
          boxWidth: 300,
          boxHeight:120,
          boxDepth: 200,
          axisLine: {
            show: true,
            interval: 0,
            lineStyle: {
              color: '#2c3e50'
            }
          },
          viewControl: {
            distance: 400
          }
        },
        series:[
          {
            type: 'scatter3D',
            name: '生产',
            itemStyle: {
              color: 'rgb(165,  0, 38)'
            },
            label: {  //当type为scatter3D时有label出现
              show: true,
              position: 'top',   //标签的位置,也就是data中数据相对于线在哪个位置
              distance: 0,
              textStyle: {
                color: '#2c3e50',
                fontSize: 12,
                borderWidth: 0,
                borderColor: '#2c3e50',
                backgroundColor: 'transparent'
              }
            },
            data: vdata[0]
          },
          {
            type: 'scatter3D',
            name: '收购',
            itemStyle:{
              color: 'rgb(215, 48, 39)'
            },
            label: {
              show:true,
              position: 'bottom',
              distance : 0,
              textStyle: {
                color: '#2c3e50',
                fontSize: 12,
                borderWidth: 0,
                borderColor: '#2c3e50',
                backgroundColor: 'transparent'
              }
            },
            data:vdata[1]
          },
          {
            type: 'scatter3D',
            name: '运输',
            itemStyle:{
              color: 'rgb(254,224,144)'
            },
            label: {
              show:true,
              position: 'bottom',
              distance : 0,
              textStyle:{
                color:'#2c3e50',
                fontSize: 12,
                borderWidth: 0,
                borderColor: '#2c3e50',
                backgroundColor: 'transparent'
              }
            },
            data:vdata[2]
          },
          {
            type: 'scatter3D',
            name: '销售',
            itemStyle:{
              color: 'rgb(255,255,191)'
            },
            label: {
              show:true,
              position: 'top',
              distance : 0,
              textStyle:{
                color:'#2c3e50',
                fontSize: 12,
                borderWidth: 0,
                borderColor: '#2c3e50',
                backgroundColor: 'transparent'
              }
            },
            data:vdata[3]
          },
          {
            type: 'scatter3D',
            name: '消费',
            itemStyle: {
              color: 'rgb(224,243,248)'
            },
            label: {
              show: true,
              position: 'bottom',
              distance: 0,
              textStyle: {
                color: '#2c3e50',
                fontSize: 12,
                borderWidth: 0,
                borderColor: '#2c3e50',
                backgroundColor: 'transparent'
              }
            },
            data: vdata[4]
          },
          {
            type: 'line3D', //当type为line3D时有label没有作用,官网没有label这个配置项
            name: '生产',
            lineStyle: {
              width: 8,   //线的宽度
              color: 'rgb(165,  0, 38)'   //线的颜色
            },
            data:vdata[0]   //线数据和点数据所需要的格式一样
          },
          {
            type: 'line3D',
            name: '收购',
            lineStyle: {
              color: 'rgb(215, 48, 39)',  //线的颜色
              width: 8     //线的宽度
            },
            data:vdata[1]
          },
          {
            type: 'line3D',
            name: '运输',
            lineStyle: {
              color: 'rgb(254,224,144)',
              width: 8
            },
            data:vdata[2]
          },
          {
            type: 'line3D',
            name: '销售',
            lineStyle: {
              color: 'rgb(255,255,191)',
              width: 8
            },
            data:vdata[3]
          },
          {
            type: 'line3D',
            name: '消费',
            lineStyle: {
              color: 'rgb(224,243,248)',
              width: 8
            },
            data:vdata[4]
          },
        ]
      })
      window.addEventListener('resize', function () {
        chart.resize();
      });
    }
  }
}
</script>

<style scoped>
.div{
  background-color: #2c3e50;
}
</style>```

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是在Vue中使用Echarts设置折线图的横纵坐标的方法: 1. 在Vue组件中引入Echarts: ```javascript import echarts from 'echarts' ``` 2. 在Vue组件中创建一个div元素,用于显示Echarts图表: ```html <template> <div ref="chart" style="width: 100%; height: 400px;"></div> </template> ``` 3. 在Vue组件的mounted钩子函数中初始化Echarts图表,并设置横纵坐标: ```javascript mounted() { // 基于准备好的dom,初始化echarts实例 const myChart = echarts.init(this.$refs.chart) // 指定图表的配置项和数据 const option = { xAxis: { type: 'category', // 横坐标类型为类目轴 data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] // 横坐标数据 }, yAxis: { type: 'value' // 纵坐标类型为数值轴 }, series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line' // 折线图 }] } // 使用刚指定的配置项和数据显示图表 myChart.setOption(option) } ``` 在上述代码中,我们通过xAxis和yAxis分别设置了横纵坐标的类型和数据。其中,xAxis的type属性设置为'category',表示横坐标为类目轴;yAxis的type属性设置为'value',表示纵坐标为数值轴。xAxis的data属性设置为一个数组,表示横坐标的数据。 4. 在Vue组件的样式中设置图表与横纵坐标的距离: ```css /* 设置图表与横纵坐标的距离 */ .echarts { padding: 10px; } ``` 在上述代码中,我们通过设置.echarts的padding属性来调整图表与横纵坐标的距离。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值