Echarts3D柱状图-圆柱体-文字在柱体上垂直显示的实现方法

全部代码

javascript 复制代码
<!DOCTYPE html>
<html lang="en" style="height: 100%">
<head>
    <meta charset="utf-8">
    <title>3D柱状图-圆柱体-文字竖排</title>
</head>
<body style="height: 100%; margin: 0">

 
<div id="main" style="height: 100%"></div>

<script type="text/javascript" src="https://cdn.staticfile.org/jquery/3.7.1/jquery.min.js"></script>
 
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script>
 

<script type="text/javascript">

    // 当请求回数据后
    initData(['周一', '周二', '周三', '周四', '周五', '周六'], [100, 50, 70, 80, 60, 40])


    function initData(xData, yData) {


        var chartDom = document.getElementById('main');
        var bar = echarts.init(chartDom);

        let options = {
            // 直角坐标系内绘图网格,设置组件距离容器的距离
            grid: {
                left: 50,
                top: 50,
                right: 50,
                bottom: 50
            },
            // 设置鼠标移入的提示,默认显示
            tooltip: {},
            // 设置图例
            legend: {
                textStyle: {
                    color: '#999'
                }
            },
            // 设置x轴
            xAxis: {
                data: [],
                // 显示x轴
                axisLine: {
                    show: true
                },
                // 设置x轴的颜色和偏移量
                axisLabel: {
                    color: '#999',
                    rotate: 0
                },
                // 不显示x轴刻度
                axisTick: {
                    show: false
                }
            },
            // 设置y轴
            yAxis: {
                // 显示y轴
                axisLine: {
                    show: true
                },
                // 设置y轴的颜色
                axisLabel: {
                    color: '#999',
                },
                // 不显示y轴刻度
                axisTick: {
                    show: false
                },
                // 不显示分隔线
                splitLine: {
                    show: false
                }
            },
            // 表示不同系列的列表
            series: []
        }


        // 设置顶部和底部的值
        let symbolData = [], newShadowHight = [];
        let heights = 0;
        yData.forEach(item => {
            symbolData.push(1)
            heights += item
        });
        newShadowHight = yData.map(item => heights);
        options.xAxis.data = xData;
        options.series = [
            // 底部
            {
                z: 2,
                type: 'pictorialBar',
                symbol: 'circle',
                symbolOffset: ['0%', '50%'],
                symbolSize: [30, 12],
                toolltip: {
                    show: false
                },
                itemStyle: {
                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#1f7eff'}, {
                        offset: 1,
                        color: '#64adff'
                    }])
                },

                data: symbolData,
            },
            //内容区域
            {
                z: 1,
                type: 'bar',
                barWidth: 30,
                label: {
                    normal: {
                        show: true,
                        position: 'inside',
                        verticalAlign: 'middle', // 垂直居中显示
                        // rotate: 90, // 旋转90度,使文字垂直显示
                        //formatter: '{a|{b}}',//{a|{c}万人}
                        formatter: function (params) {

                            console.log(params);


                            let txtArry = params.name.split('');
                            let rs = "";
                            for (var i = 0; i < txtArry.length; i++) {
                                rs += txtArry[i] + "\n";
                            }

                            return rs;
                        },
                        rich: {
                            a: {
                                color: '#fff',
                                fontSize: 14,
                                align: 'center',
                            },
                        }

                    }
                },
                data: yData
            },
            //内容的顶部
            {
                z: 3,
                type: 'pictorialBar',
                symbol: 'circle',
                symbolPosition: 'end',
                symbolOffset: ['0%', '-50%'],
                symbolSize: [30, 12],
                toolltip: {
                    show: false,
                },
                itemStyle: {
                    color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0, color: '#1f7eff'}, {
                        offset: 1,
                        color: '#64adff',
                    }])
                },
                label: {
                    normal: {
                        show: true,
                        position: 'top',
                        formatter: '{a|{c}万人}',//{a|{c}万人}
                        rich: {
                            a: {
                                color: 'inherit',
                                fontSize: 14,
                                align: 'center'
                            },
                        }
                    }
                },
                data: yData,
            },

        ];

        // 设置配置项
        bar.setOption(options);

        window.addEventListener('resize', bar.resize);

    }


</script>
</body>
</html>

效果图

相关推荐
程序员大阳1 小时前
副队长JavaScript教程(55)-DOM节点增删改查
javascript·dom·增删改查·节点·克隆
程序0072 小时前
天地图实现收货地址定位
前端·javascript·css
心梦轻舞2 小时前
从 14 道面试题,彻底搞懂 Event Loop 与 Vue2 nextTick 底层原理
javascript
paopaokaka_luck2 小时前
社区服务平台(加权协同过滤推荐、Jieba中文词频分析、WebSocket实时聊天、求助处理闭环、 活动积分闭环、ECharts多维分析)
java·前端·spring boot·mysql·echarts·mybatis
qq_340040883 小时前
idea2021版,vue项目的package.json不展示scripts的绿色箭头
javascript·vue.js·json
2601_968900773 小时前
玻璃深加工的工艺窗口:4 道工序的温度与时间参数边界
android·java·javascript
程序员大阳3 小时前
副队长JavaScript教程(53)-DOM操作元素的属性
javascript·dom·属性·setattribute·getattribuite
Non-existent9874 小时前
在 WPS/Excel 里做地理数据处理:功能市场 + 奥维 / Google Earth / QGIS 三种跳转实战
开发语言·javascript·ecmascript
zhougl9964 小时前
什么是 URL
javascript
mmsx5 小时前
Android 并发考古:newThread 与 RxJava 共存,以及 GlobalScope 的三宗罪
android·echarts·rxjava