echarts实现单3D立体柱状图

效果图:
在这里插入图片描述
实现代码:

function getEcharts3DBar (xAxisData, data, colorType) {
    var colorArr = [];
    if (colorType == '01') {
        colorArr = ["#2886c6", "#50bfda", "#89e3ec"];
    } else {
        colorArr = ["#28c1c6", "#50dac0", "#87e8c7"];
    }
    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 barWidth = 30;
    var constData = [];
    var showData = [];
    data.filter(function (item) {
    if (item) {
        constData.push(1);
        showData.push(item);
    } else {
        constData.push(0);
        showData.push(
         {
            value: 1,
            itemStyle: {
              normal: {
                borderColor: "rgba(0,0,0,0)",
                borderWidth: 2,
                color: "rgba(0,0,0,0)",
              },
            },
         }
        );
    }
    });
    return {
        tooltip: {
            trigger: "axis",
            formatter: function (params) {
            var str = params[0].axisValue + ":";
            params.filter(function (item) {
                if (item.componentSubType == "bar") {
                str += "<br/>" + item.seriesName + ":" + item.value;
                }
            });
            return str;
            },
        },
        grid: {
            left: "3%", //图表距边框的距离
            right: "3%",
            top: "15%",
            bottom: "5%",
            containLabel: true,
        },
        xAxis: {
            data: xAxisData,
            axisTick: {
            show: false,
            },
        },
        yAxis: {
            axisTick: {
            show: false,
            },
            axisLine: {
            show: false,
            },
            axisLabel: {
            show: false,
            },
        },
        series: [
            {
	            z: 1,
	            name: '数据',
	            type: "bar",
	            barWidth: barWidth,
	            barGap: "0%",
	            data: data,
	            itemStyle: {
	                normal: {
	                color: color,
	                },
	            },
            },
            {
	            z: 2,
	            name: '数据',
	            type: "pictorialBar",
	            data: constData,
	            symbol: "diamond",
	            symbolOffset: ["0%", "50%"],
	            symbolSize: [barWidth, 10],
	            itemStyle: {
	                normal: {
	                color: color,
	                },
	            },
	            tooltip: {
	                show: false,
	            },
            },
            {
	            z: 3,
	            name: '数据',
	            type: "pictorialBar",
	            symbolPosition: "end",
	            data: showData,
	            symbol: "diamond",
	            symbolOffset: ["0%", "-50%"],
	            symbolSize: [barWidth - 4, (10 * (barWidth - 4)) / barWidth],
	            itemStyle: {
	                normal: {
	                borderColor: colorArr[2],
	                borderWidth: 2,
	                color: colorArr[2],
	                },
	            },
	            tooltip: {
	                show: false,
	            },
            },
        ],
    };
}
调用:
var serveTBar = echarts.init(document.getElementById('serveTBar'));
serveTBar.setOption(getEcharts3DBar(['服务1', '服务2', '服务3', '服务4', '服务5'], [5, 36, 10, 20, 15], '01'));
var serveBBar = echarts.init(document.getElementById('serveBBar'));
serveBBar.setOption(getEcharts3DBar(['物业1', '物业2', '物业3', '物业4', '物业5'], [5, 36, 10, 20, 15], '02'));

注:getEcharts3DBar方法中柱状图的柱宽barWidth给了一个固定的值30,若改变这个值时图形可能会有些变形,此时只需要调整series[1]和series[2]中symbolOffset的值即可。series[1]为柱子的底部,series[2]为柱子的顶部,每一个立体柱状图都是由上中下三部分组成,因此颜色需要达到统一。

此处介绍的是多3D立体柱状图,若想要了解单个柱子的3D柱状图,请参考《echarts实现多3D立体柱状图》,文章地址:https://blog.csdn.net/Dalin0929/article/details/110189068

  • 10
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
要使用ECharts实现立体柱状图,你可以使用ECharts提供的bar3D系列。首先,你需要引入ECharts的库文件。你可以在这里下载ECharts的最新版本。接下来,你需要在HTML文件中创建一个容器,用于展示图表。然后,你可以使用以下代码来实现一个简的多立体柱状图: ```javascript // 引入ECharts库 <script src="echarts.min.js"></script> // 创建图表容器 <div id="chart" style="width: 600px; height: 400px;"></div> // 使用ECharts绘制多立体柱状图 <script> // 初始化图表 var chart = echarts.init(document.getElementById('chart')); // 定义图表的配置项和数据 var option = { tooltip: {}, visualMap: { max: 20, inRange: { color: ['#87cefa', '#006edd'] } }, xAxis3D: { type: 'category', data: ['A', 'B', 'C', 'D', 'E'] }, yAxis3D: { type: 'value' }, zAxis3D: { type: 'category', data: ['Category 1', 'Category 2', 'Category 3'] #### 引用[.reference_title] - *1* [echarts 立体柱状图(多个柱状图)](https://blog.csdn.net/cjy_fly/article/details/127037205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [通过Echarts怎样实现立体柱状图](https://blog.csdn.net/weixin_55123102/article/details/129157175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [使用echarts实现立体-柱状图](https://download.csdn.net/download/weixin_41620505/86247612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值