Use echarts in vue to realize 3d two-color histogram

Renderings:

insert image description here

Introduce:

import * as echarts from 'echarts'

layout:

 <div id="bar3d" style="height: 260px;width:580px;margin: 0 auto;"></div>

The specific implementation code:

 mounted() {
    
    
      this.initChart()
    },
 methods:{
    
    
	    initChart() {
    
    
        //绿色
        const data = [1700,800, 1700, 600,800,1700,800,1700,1700,800,1700,800];
        //蓝色
        const data2 = [2600,1400, 3350, 1400, 1400, 3350, 1400, 3350, 2600,1400,3350,1400];
        const sideData = data.map(item => item + 90);
        const sideData2 = data.map(item => item + 90);
	      var serveTBar = echarts.init(document.getElementById('bar3d'));
        serveTBar.setOption(getEcharts3DBar());
     
        function getEcharts3DBar () {
    
    
          //左侧 右侧 顶部
          //蓝色
			 var colorArr2 = ["rgba(11, 83, 128)", "rgba(2, 143, 224)", "rgba(11, 83, 128)"];
       //绿色
       var colorArr = ["rgb(12, 109, 122)", "rgba(1, 241, 228)", "rgb(12, 109, 122)"];
       //绿色
			 var color = {
    
    
				 type: "linear",
				 x: 0,
				 x2: 1,
				 y: 0,
				 y2: 0,
				 colorStops:  [
					 {
    
    
						 offset: 0,
						 color: colorArr[0],
					 },
					 {
    
    
						 offset: 0.5,
						 color: colorArr[0],
					 },
					 {
    
    
						 offset: 0.5,
						 color: colorArr[1],
					 },
					 {
    
    
						 offset: 1,
						 color: colorArr[1],
					 },
				 ],
			 };
       var color2 = {
    
    
				 type: "linear",
				 x: 0,
				 x2: 1,
				 y: 0,
				 y2: 0,
				 colorStops:  [
					 {
    
    
						 offset: 0,
						 color: colorArr2[0],
					 },
					 {
    
    
						 offset: 0.5,
						 color: colorArr2[0],
					 },
					 {
    
    
						 offset: 0.5,
						 color: colorArr2[1],
					 },
					 {
    
    
						 offset: 1,
						 color: colorArr2[1],
					 },
				 ],
			 };
       //柱子宽度
			 var barWidth = 15;
			 var option = {
    
    
				 tooltip: {
    
    
					 trigger: 'axis',
					 formatter: function (params) {
    
    
						 var str = params[0].name + ":";
						 params.filter(function (item) {
    
    
							 if (item.componentSubType == "bar") {
    
    
								 str += "<br/>" + item.seriesName + ":" + item.value;
							 }
						 });
						 return str;
					 },
				 },
         //图表大小位置限制
				 grid:{
    
    
					 x:'10%',
					 x2:'5%',
					 y:'15%',
					 y2:'15%',
				 },
				//  legend: {
    
    
				// 	 show:false,
				// 	 data:['绿色','蓝色'],
				// 	 textStyle:{
    
    
				// 		 color:'#fff',
				// 		 fontSize:'20'
				// 	 }
				//  },
				 xAxis: {
    
    
					 data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月','9月','10月','11月','12月'],
					 //坐标轴
					 axisLine :{
    
    
						 show:true,
						 lineStyle: {
    
    
							 width: 1,
							 color: '#214776'
						 },
						 textStyle:{
    
    
							 color:'#fff',
							 fontSize:'10'
						 }
					 },
					 type : 'category',
					 axisLabel :{
    
    
						 textStyle:{
    
    
							 color: '#C5DFFB',
							 fontWeight: 500,
							 fontSize:'14'
						 }
					 },
					 axisTick  :{
    
    
						 textStyle:{
    
    
							 color:'#fff',
							 fontSize:'16'
						 },
						 show: false,
					 },
           axisLine: {
    
    
                //坐标轴轴线相关设置。数学上的x轴
                show: true,
                lineStyle: {
    
    
                    type:'dashed',//线的类型 虚线
                    color: '#DEDEDE',
                },
            },
				 },
				 yAxis: {
    
    
          name: '厂屋租凭统计:',
            nameTextStyle: {
    
    
                color: '#DEDEDE',
                fontSize: 12,
                padding: 10,
            },
            min: 0,//最小
            max: 3500,//最大
            interval: 500,//相差
					 type : 'value',
           splitLine: {
    
    
                show: true,
               lineStyle: {
    
    
                     type:'dashed',//线的类型 虚线0
                     opacity:0.2//透明度
                },
            },
					 axisTick  :{
    
    
						 show:false
					 },
            axisLine: {
    
    
                show: false,
            },
					 //坐标值标注
					 axisLabel: {
    
    
						 show: true,
						 textStyle: {
    
    
							 color: '#C5DFFB',
						 }
					 },
				 },
				 series: [
          //中
					 {
    
    
						 z: 1,
						 name: '绿色',
						 type: "bar",
						 barWidth: barWidth,
						 barGap: "0%",
						 data: data,
						 itemStyle: {
    
    
               normal: {
    
    
                color: color,
                //柱形图上方标题
                label: {
    
    
                  show: true,
                  position: 'top',
                  textStyle: {
    
    
                    color: 'rgb(1, 255, 250)',
                    fontSize: 8
                  }
                },
              }
						 },
					 },
           //下
					 {
    
    
						 z: 2,
						 name: '绿色',
						 type: "pictorialBar",
						 data: sideData,
						 symbol: "diamond",
						 symbolOffset: ["-75%", "50%"],
						 symbolSize: [barWidth, 10],
						 itemStyle: {
    
    
							 normal: {
    
    
								 color: color
							 },
						 },
						 tooltip: {
    
    
							 show: false,
						 },
					 },
           //上
					 {
    
    
						 z: 3,
						 name: '绿色',
						 type: "pictorialBar",
						 symbolPosition: "end",
						 data: data,
						 symbol: "diamond",
						 symbolOffset: ["-75%", "-50%"],
						 symbolSize: [barWidth - 4, (10 * (barWidth - 4)) / barWidth],
						 itemStyle: {
    
    
							 normal: {
    
    
								 borderWidth: 2,
								 color: colorArr[2]
							 },
						 },
						 tooltip: {
    
    
							 show: false,
						 },
					 },
					 {
    
    
						 z: 1,
						 name: '蓝色',
						 type: "bar",
						 barWidth: barWidth,
						 barGap: "50%",
						 data: data2,
						 itemStyle: {
    
    
              normal: {
    
    
                color: color2,
                //柱形图上方标题
                label: {
    
    
                  show: true,
                  position: 'top',
                  textStyle: {
    
    
                    color: 'rgb(2, 157, 246)',
                    fontSize: 8
                  }
                },
              }
						 },
					 },
					 {
    
    
						 z: 2,
						 name: '蓝色',
						 type: "pictorialBar",
						 data: sideData2,
						 symbol: "diamond",
						 symbolOffset: ["75%", "50%"],
						 symbolSize: [barWidth, 10],
						 itemStyle: {
    
    
							 normal: {
    
    
								 color: color2
							 },
						 },
						 tooltip: {
    
    
							 show: false,
						 },
					 },
					 {
    
    
						 z: 3,
						 name: '蓝色',
						 type: "pictorialBar",
						 symbolPosition: "end",
						 data: data2,
						 symbol: "diamond",
						 symbolOffset: ["75%", "-50%"],
						 symbolSize: [barWidth - 4, (10 * (barWidth - 4)) / barWidth],
						 itemStyle: {
    
    
							 normal: {
    
    
								 borderWidth: 2,
								 color: colorArr2[2]
							 },
						 },
						 tooltip: {
    
    
							 show: false,
						 },
					 },
				 ],
			 };
			 return option;
		 }
	    },
    },

Does anyone know how to change it to a gradient from top to bottom? ε=(´ο`*)))

Guess you like

Origin blog.csdn.net/weixin_47336389/article/details/128496196