首页 前端知识 echarts 3D柱状图

echarts 3D柱状图

2024-02-22 11:02:39 前端知识 前端哥 406 779 我要收藏

我通过三个 series来实现柱状的顶面 柱状面以及底面,但是这里面会有个问题,鼠标放上去的提示也会有三个,所以我们要在tooltip 提示消息里面自定义消息,就可以解决这个问题。

 

h5 

    <div class="c-l-3">

            <p>社区康复巩固率</p>

             <div id="container2" style="height:240px; width: 100%;"></div>

       </div>

js部分

<script type="text/javascript">

    var dom = document.getElementById("container2");

    var myChart = echarts.init(dom);

    var app = {};

    //指定图表的配置项和数据

    var option = {

        // 工具箱

        toolbox: {

            show: true,

            feature: {

            },

        },

        tooltip: {

            trigger: 'axis',

            formatter(params) {

                console.log(option)

                // params[2].marker 小圆点

                return params[2].name + "<br/>" + params[2].marker + '人数:' + params[2].data + "                <br/>" + params[3].marker + '占比:' + params[3].data

            

            },

            axisPointer: {            // 坐标轴指示器,坐标轴触发有效

                type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'

            }

        },

        // 图例

        // color: ['#ffffff'],

        // 图片文字解析部分

        legend: {

            data: ['人数', '比率'],

            orient: 'horizontal', //横向显示

            padding: [0, 30, 0, 0],   //可设定图例[距上方距离,距右方距离,距下方距离,距左方距离]

            // 位置

            x: 'right',

            y: 'top',

            itemGap: 40,//图例之间的间距

            textStyle: { fontSize: 14, color: '#96d0f4' },

        },

        // x轴

        xAxis: {

            boundaryGap: false, //从零开始

            type: 'category',

            data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],

            splitNumber: 12,

            boundaryGap: true, //x轴两边是否留白

            //设置网格线颜色

            splitLine: {

                show: true,

                lineStyle: {

                    color: ['rgba(0,231,255,.1)'],

                    width: 1,

                    type: 'solid'

                },

            },

            axisLine: {

                lineStyle: {

                    type: 'solid',

                    color: 'rgba(4,164,199,1)',//坐标线的颜色

                    width: '1'//坐标线的宽度

                },

            },

            axisTick: {

                show: false

            },

            axisLabel: {

                show: true,

                textStyle: {

                    color: '#fff',//坐标值得具体的颜色

                    fontSize: 12,

                },

                interval: 0,  //显示x轴下放的信息是否完全 0为完全 1为不完全

                formatter: function (value) {

                    var ret = "";//拼接加\n返回的类目项

                    var maxLength = 5;//每项显示文字个数

                    var valLength = value.length;//X轴类目项的文字个数

                    var rowN = Math.ceil(valLength / maxLength);

                    if (rowN > 1)//如果类目项的文字大于3,

                    {

                        for (var i = 0; i < rowN; i++) {

                            var temp = "";//每次截取的字符串

                            var start = i * maxLength;//开始截取的位置

                            var end = start + maxLength;//结束截取的位置

                            //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧

                            temp = value.substring(start, end) + "\n";

                            ret += temp; //凭借最终的字符串

                        }

                        return ret;

                    }

                    else {

                        return value;

                    }

                }

            },

            spiltLine: {

                show: false  //想要不显示网格线,改为false

            }

        },

        // y轴

        yAxis: [

            {

                name: '人数',

                nameTextStyle: {

                    color: "#96d0f4",

                    nameLocation: "start",

                    fontSize: 12

                },

                type: 'value',

                max: 210,

                min: 0,

                left: '0',

                top: '0',

                splitNumber: 6,

                // y轴的字体样式

                axisTick: {

                    show: false //是否显示刻度线

                },

                axisLabel: {

                    interval: 1,

                    textStyle: {

                        color: '#96d0f4',

                        fontSize: '12',

                        padding: 5,

                    }

                },

                axisLine: {

                    show: true,

                    lineStyle: {

                        type: 'solid',

                        color: 'rgba(4,164,199,1)',//左边线的颜色

                        width: '1',//坐标线的宽度

                    }

                },

                splitLine: {

                    show: false,

                    lineStyle: {

                        color: ['rgba(0,231,255,.1'],

                        width: 1,

                        type: 'solid',

                    },

                },

            },

            {

                name: '比率', //单位

                nameTextStyle: {

                    color: "#96d0f4",

                    nameLocation: "start",

                    fontSize: 12

                },

                type: 'value',

                max: 50,

                min: 0,

                left: '0',

                top: '0',

                splitNumber: 6,

                axisTick: {

                    show: false //是否显示刻度线

                },

                // y轴的字体样式

                axisLabel: {

                    interval: 12,

                    textStyle: {

                        color: '#96d0f4',

                        fontSize: '12',

                        padding: 5,

                    }

                },

                axisLine: {

                    show: true,

                    lineStyle: {

                        type: 'solid',

                        color: 'rgba(4,164,199,1)',//左边线的颜色

                        width: '1',//坐标线的宽度

                    }

                },

                splitLine: {

                    show: false,

                    lineStyle: {

                        color: ['rgba(0,231,255,.1'],

                        width: 1,

                        type: 'solid',

                    },

                },

            },

        ],



 

        grid: {

            // 距离左边的距离

            x: 60,

            y: 50,

            x2: 70,

            y2: 40,

            borderWidth: 10,

        },

        // 数据

        series: [

            //柱顶圆片

            {

                name: "人数",

                type: "pictorialBar",

                symbolSize: [20, 8],//调整截面形状

                symbolOffset: [0, -5],

                z: 12,

                symbolPosition: "end",

                label: {

                    // 顶部显示的数字

                    show: false,

                    position: 'top',

                    textStyle: {

                        color: '#fff'

                    }

                },

                itemStyle: {

                    normal: {

                        color: '#17E1FF',

                    }

                },

                data: [130, 110, 165, 140, 165, 140, 130, 150, 170, 190, 120, 190],

            },

            {

                name: '人数',

                // 直方图

                type: 'pictorialBar',

                symbolSize: [20, 8],//调整截面形状

                symbolOffset: [0, 4],

                z: 12,

                itemStyle: {

                    normal: {

                        color: '#183E96',

                    }

                },

                data: [130, 110, 165, 140, 165, 140, 130, 150, 170, 190, 120, 190],

            },

            {

                name: '人数',

                type: 'bar',

                barWidth: 20,

                barGap: '0%',

                itemStyle: {

                    color: () => {

                        return new echarts.graphic.LinearGradient(0, 0, 0, 1, [

                            { offset: 0, color: '#01AEF6' },

                            { offset: 1, color: 'rgba(16,36,95,0.6)' },

                        ])

                    },

                    opacity: 1

                },

                data: [130, 110, 165, 140, 165, 140, 130, 150, 170, 190, 120, 190],

            },


 

            {

                name: '比率',

                symbol: 'circle', // 设置标记的图形为circle  不设置的话不会改变整个圆的颜色

                //折线图

                smooth: true,//曲线

                backgroundStyle: {

                    color: 'rgba(255, 170, 23, 1)'

                },

                symbolSize: 10,

                itemStyle: {

                    normal: {

                        color: '#ffaa17', //改变折线点的颜色

                        lineStyle: {

                            color: '#ffaa17', //改变折线颜色

                        }

                    }

                },

                type: 'line',

                data: [100, 90, 150, 130, 150, 120, 110, 140, 160, 180, 110, 180],

            }

        ]

    }

    // 使用刚指定的配置项和数据显示图表

    app.currentIndex = -1;

    if (option && typeof option === "object") {

        myChart.setOption(option, true);

    }

</script>

转载请注明出处或者链接地址:https://www.qianduange.cn//article/2504.html
标签
评论
发布的文章

程序员的中秋节

2024-03-09 09:03:01

js中几种追加元素的方法

2024-03-08 10:03:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!