echarts 创建3D渐变柱状图

说明:实际项目美工效果图需要,网上找了相关的案例,发现有用图片的,但是发现图片的如果数据比较复杂会出现变形的,不实用,因此还是使用代码控制比较好,看看是否差不多了呢,细节后面大家可以自己调试。

美工效果图
在这里插入图片描述

什么都不说,直接上代码:

1.配置项option

 var color1 = new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0, color: "#38a0d6"}, {offset: 1, color: "#6dcde6"}], false);
    var color2 = new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0, color: "#4366f3"}, {offset: 1, color: "#1d43f3"}], false);
    var color3 = new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0, color: "#4721ca"}, {offset: 1, color: "#8651f4"}], false);
    var color4 = new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0, color: "#9837dd"}, {offset: 1, color: "#e23af5"}], false);
    var color5 = new echarts.graphic.LinearGradient(0, 1, 0, 0, [{offset: 0, color: "#ff934c"}, {offset: 1, color: "#fc686f"}], false);

    var option = {
        color: [color1,color2,color3,color4,color5], //控制主要渐变色用
        color2:["#38a0d6","#4366f3","#4721ca","#9837dd", "#ff934c"], //背景色不需要渐变,后面改透明度即可
        tooltip: {axisPointer: {type: 'shadow'}},
        xAxis: {type: 'category', axisLabel: {margin:20}, data: []},
        yAxis: {type: 'value', axisLabel: {margin:20}},
        grid: {top:'3%',left: '7%',right:'7%'},
        series: [
            {
                name: '标签',
                type:'pictorialBar',
                symbol: 'rect',
                symbolSize: ['50', '100%'],
                data: [],
                z: 2,
                symbolOffset: ['0', '-15']
            },
            {
                name: 'b',
                stack: 'amount',
                tooltip: {show: false},
                type: 'pictorialBar',
                symbol: 'diamond',
                symbolSize: ['50', '30'],
                symbolOffset: ['0', '-29'],
                symbolPosition:'end',
                data: [],
                z: 3
            },
            {
                name: 'c',
                stack: 'amount',
                tooltip: {show: false},
                type: 'pictorialBar',
                symbol: 'diamond',
                symbolSize: ['50', '30'],
                symbolPosition:'start',
                data: [],
                z: 3
            },
            {
                name: 'd',
                tooltip: {show: false},
                type:'pictorialBar',
                symbol: 'rect',
                symbolSize: ['50', '100%'],
                data: [],
                z: 0,
                symbolOffset: ['0', '-15']
            },
            {
                name: 'e',
                stack: 'amount',
                tooltip: {show: false},
                type: 'pictorialBar',
                symbol: 'diamond',
                symbolSize: ['50', '30'],
                symbolOffset: ['0', '-28.4'],
                symbolPosition:'end',
                data: [],
                z: 0
            },
            {
                name: 'f',
                stack: 'amount',
                tooltip: {show: false},
                type: 'pictorialBar',
                symbol: 'triangle',
                symbolSize: ['50', '15'],
                symbolOffset: ['0', '-28.4'],
                symbolPosition:'end',
                data: [],
                z: 0
            },
        ]
    };

2.绑定数据

//假数据如下开始
    option.series[0].name = "数量";
    var data = [
        {name:"周一",value:280,maxvalue:1000},
        {name:"周二",value:1000,maxvalue:1000},
        {name:"周三",value:560,maxvalue:1000},
        {name:"周四",value:400,maxvalue:1000},
        {name:"周五",value:800,maxvalue:1000}
    ];
    for(var i=0;i<data.length;i++){
        option.xAxis.data.push(data[i].name);
        option.series[0].data.push({
            value: data[i].value,
            itemStyle:{color:option.color[i%(option.color.length)]},
            animation :false
        });
        option.series[1].data.push({
            value: data[i].value+ 4.5,
            itemStyle:{color:option.color[i%(option.color.length)]},
            animation :false
        });
        option.series[2].data.push({
            value:  4.5,
            itemStyle:{color:option.color2[i%(option.color2.length)]},
            animation :false
        });
        option.series[3].data.push({
            value: data[i].maxvalue,
            itemStyle:{color:option.color2[i%(option.color.length)], opacity:0.3},
            emphasis:{itemStyle:{color:option.color2[i%(option.color.length)]}},
            animation :false
        });
        option.series[4].data.push({
            value: data[i].maxvalue+ 4.5,
            itemStyle:{color:option.color2[i%(option.color.length)], opacity:0.3,},
            emphasis:{itemStyle:{color:option.color2[i%(option.color.length)]}},
            animation :false
        });
        option.series[5].data.push({
            value: data[i].maxvalue+ 4.5,
            itemStyle:{color:option.color2[i%(option.color.length)], opacity:0.3,},
            emphasis:{itemStyle:{color:option.color2[i%(option.color.length)]}},
            animation :false
        });
    }
    //初始化echarts
    var mychart = echarts.init(document.getElementById('chart1'),"halloween"); //halloween是我的theme,根据你们的需要可以不写
    mychart.setOption(option);

3.运行起来

在这里插入图片描述
哈哈,是不是很不错呢,细节大家可以再调整哦。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值