【echarts】ECharts柱状图(横向+双Y轴)-部分配置项

本文介绍如何使用ECharts配置横向柱状图及双Y轴图表,并提供具体配置代码示例,包括自定义提示信息、图例设置等,适用于网页数据可视化需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@TOC

1.横向柱状图+自定义提示信息

1.1效果图:

在这里插入图片描述
在这里插入图片描述
2.option的配置:

var option1 = {
                //提示框,默认显示
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {// 坐标轴指示器,坐标轴触发有效
                        type: 'shadow'// 默认为直线,可选为:'line' | 'shadow'
                    },
                    // 控制提示格式
                    formatter: function(param){
                        return `${param[0].axisValue}: <br/>${param[0].value}`
                    }
                },
                //控制直角坐标系与容器上下左右的距离
                grid: {
                    left: '2%',
                    right: '12%',
                    bottom: '0',
                    top: '4%',
                    containLabel: true,//gid区域是否包含坐标轴的刻度标签。
                },
                // x轴(指的是水平的那条线)相关配置
                xAxis: [
                    {
                        type: 'value',//x轴数据类型,value时就是值,category时就是分类,可用于区分y轴与x轴
                        axisLabel: {    // 坐标轴标签
                            show: true,  // 是否显示
                            // inside: true, // 标签是否朝内,默认false
                            interval: 0,//设置刻度间间隔,0表示全部显示不间隔;auto:表示自动根据刻度个数和宽度自动设置间隔个数
                            rotate: 0, // 旋转角度
                            margin: 5, // 刻度标签与轴线之间的距离
                            color: '#000',  // 标签颜色默认取轴线的颜色 
                            fontSize: 12//标签字号
                        },
                        splitLine: {    // 网格线
                            show: false  // 是否显示,默认为true
                        },
                        axisLine: {    // 坐标轴 轴线
                            show: true,  // 是否显示,默认false
                            lineStyle: {
                            // color: '#FFFFFF',//轴线颜色
                            width: 1,//轴线宽度
                            type: 'solid'//轴线类型
                            }
                        },
                    }
                ],
                // y轴(垂直的那条线)设置
                yAxis: [
                    {
                        type: 'category',
                        data: ['棒球','羽毛球','足球','网球','篮球','乒乓球'],//类目轴数据
                        axisLabel: {    // 坐标轴标签
                            show: true,  // 是否显示
                            inside: false, // 是否朝内
                            color: '#000',
                            fontSize: 12
                        },
                        splitLine: {    // 网格线
                            show: false  // 是否显示,默认为false
                        },
                        axisLine: {    // 坐标轴 轴线
                            show: true,  // 是否显示
                            lineStyle: {
                            // color: '#FFFFFF',
                            width: 1,
                            type: 'solid'
                            }
                        },
                        boundaryGap: true,//显示刻度,默认为 true,只是作为分隔线,标签和数据点都会在两个刻度之间的带中间
                        axisTick: {//坐标轴刻度相关
                            alignWithLabel: true,//类目轴中在`boundaryGap`为`true`的时候有效,可以保证刻度线和标签对齐
                        },
                        inverse:true,//翻转y轴数据
                    }
                ],
                series: [
                    {
                        name: '直接访问',
                        type: 'bar',//表明柱状体,饼图是pie,折线图是line
                        barWidth: 10,//柱子宽度
                        data: [10,50,30,26,17,47],//值数据,与类型数据一一对应
                        itemStyle: {
                            // emphasis: {
                            //     barBorderRadius: 7,
                            // },
                            normal: {//柱子相关设置
                                barBorderRadius: [0,7,7,0],//设置柱子圆角;左上-右上-右下-左下
                                label: {//柱子标签相关
                                    show: true,
                                    position: 'right',//柱子标签位置
                                    textStyle: {//柱子标签文本设置
                                        color: '#000',
                                        fontSize: 12
                                    },
                                },
                                color: new echarts.graphic.LinearGradient(//柱子加渐变色
                                    0, 0, 1, 0,
                                    [
                                        {offset: 0, color: '#F9456D'},//柱图渐变色
                                        // {offset: 0.5, color: '#44C0C1'},//柱图渐变色
                                        {offset: 1, color: '#FDEEB0'},//柱图渐变色
                                    ]
                                )
                            },
                        }
                    }
                ],
            };

2.双Y轴+图例

在这里插入图片描述
在这里插入图片描述
2.2option的配置:

var option1 = {
                //提示框,默认显示
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {// 坐标轴指示器,坐标轴触发有效
                        type: 'shadow'// 默认为直线,可选为:'line' | 'shadow'
                    }
                },
                //控制直角坐标系与容器上下左右的距离
                grid: {
                    left: '2%',
                    right: '2%',
                    bottom: '15%',
                    top: '14%',
                    containLabel: true,//gid区域是否包含坐标轴的刻度标签。
                },
                //图例相关
                legend: {
                    top:'90%',
                    left:'center',
                    data:['喜爱人数','实际运动人数'],//与series两个对象中的name对应
                    itemGap: 15, // 图例间隔
                    itemWidth: 8, //图例大小(小方块)
                    itemHeight: 8, //图例大小
                    orient: 'vertical',// horizontal   vertical
                    icon: "rectangle", //图例的形状
                    textStyle: { //图例文字的样式
                        color: '#000',
                        fontSize: 12
                    },
                },
                // x轴(指的是水平的那条线)相关配置
                xAxis: [
                    {
                        type: 'category',
                        data: ['棒球','羽毛球','足球','网球','篮球','乒乓球'],//类目轴数据
                        axisLabel: {    // 坐标轴标签
                            show: true,  // 是否显示
                            inside: false, // 是否朝内
                            color: '#000',
                            fontSize: 12,
                            interval: 0,//设置刻度间间隔,0表示全部显示不间隔;auto:表示自动根据刻度个数和宽度自动设置间隔个数
                        },
                        splitLine: {    // 网格线
                            show: false  // 是否显示,默认为false
                        },
                        axisLine: {    // 坐标轴 轴线
                            show: true,  // 是否显示
                            lineStyle: {
                            // color: '#FFFFFF',
                            width: 1,
                            type: 'solid'
                            }
                        },
                        boundaryGap: 'true',//显示刻度,默认为 true,只是作为分隔线,标签和数据点都会在两个刻度之间的带中间
                        axisTick: {//坐标轴刻度相关
                            alignWithLabel: true,//类目轴中在`boundaryGap`为`true`的时候有效,可以保证刻度线和标签对齐
                        },
                        inverse:true,//翻转y轴数据
                    }
                ],
                // y轴(垂直的那条线)设置
                yAxis: [
                    {
                        type: 'value',//x轴数据类型,value时就是值,category时就是分类,可用于区分y轴与x轴
                        axisLabel: {    // 坐标轴标签
                            show: true,  // 是否显示
                            // inside: true, // 标签是否朝内,默认false
                            // interval: 0,//设置刻度间间隔,0表示全部显示不间隔;auto:表示自动根据刻度个数和宽度自动设置间隔个数
                            rotate: 0, // 旋转角度
                            margin: 5, // 刻度标签与轴线之间的距离
                            color: '#000',  // 标签颜色默认取轴线的颜色 
                            fontSize: 12//标签字号
                        },
                        splitLine: {    // 网格线
                            show: false  // 是否显示,默认为true
                        },
                        axisLine: {    // 坐标轴 轴线
                            show: true,  // 是否显示,默认false
                            lineStyle: {
                            // color: '#FFFFFF',//轴线颜色
                            width: 1,//轴线宽度
                            type: 'solid'//轴线类型
                            }
                        },
                    },
                    {
                        type: 'value',//x轴数据类型,value时就是值,category时就是分类,可用于区分y轴与x轴
                        axisLabel: {    // 坐标轴标签
                            show: true,  // 是否显示
                            // inside: true, // 标签是否朝内,默认false
                            // interval: 0,//设置刻度间间隔,0表示全部显示不间隔;auto:表示自动根据刻度个数和宽度自动设置间隔个数
                            rotate: 0, // 旋转角度
                            margin: 5, // 刻度标签与轴线之间的距离
                            color: '#000',  // 标签颜色默认取轴线的颜色 
                            fontSize: 12//标签字号
                        },
                        splitLine: {    // 网格线
                            show: false  // 是否显示,默认为true
                        },
                        axisLine: {    // 坐标轴 轴线
                            show: true,  // 是否显示,默认false
                            lineStyle: {
                            // color: '#FFFFFF',//轴线颜色
                            width: 1,//轴线宽度
                            type: 'solid'//轴线类型
                            }
                        },
                    }
                ],
                series: [
                    {
                        name: '喜爱人数',
                        type: 'bar',//表明柱状体,饼图是pie,折线图是line
                        barWidth: 10,//柱子宽度
                        data: [10,50,30,26,17,47],//值数据,与类型数据一一对应
                        yAxisIndex: 0,//数据的刻度对应左边
                        itemStyle: {
                            // emphasis: {
                            //     barBorderRadius: 7,
                            // },
                            normal: {//柱子相关设置
                                // barBorderRadius: [7,7,0,0],//设置柱子圆角;左上-右上-右下-左下
                                color: '#F9456D'
                            },
                        }
                    },
                    {
                        name: '实际运动人数',
                        type: 'bar',//表明柱状体,饼图是pie,折线图是line
                        barWidth: 10,//柱子宽度
                        data: [18,30,20,40,27,17],//值数据,与类型数据一一对应
                        yAxisIndex: 1,//数据的刻度对应右边
                        itemStyle: {
                            // emphasis: {
                            //     barBorderRadius: 7,
                            // },
                            normal: {//柱子相关设置
                                color: '#497EF2'
                            },
                        }
                    }
                ],
            };

3.下次遇到需要其他配置的可以查看W3Cschool的教程:

https://www.w3cschool.cn/echarts_tutorial/echarts_tutorial-mec528xa.html

4.测试效果

在这里插入图片描述

<think>好的,我现在需要解决用户在ECharts横向柱状图中遇到的Y文字显示不全的问题。首先,我要回想一下ECharts的相关配置,尤其是Y的设置。Y文字显示不全通常是因为空间不足,导致文字被截断或者溢出。可能的原因有几个方面: 1. **Y标签的宽度不足**:默认情况下,ECharts可能会给Y分配固定的宽度,如果文字较长,就会被截断。这时候需要调整grid的left属性,留出足够的空间给Y标签。 2. **文字样式设置**:比如字体大小过大或者没有换行,导致单行文字过长。可能需要调整字体大小或者启用换行。 3. **使用省略号代替过长文字**:如果空间实在有限,可以考虑截断文字并用省略号显示,类似于引用[2]中提到的方法,但这里可能需要应用到Y的formatter上。 接下来,我需要逐一考虑这些可能性,并提供对应的解决方案。根据引用[1]中的例子,用户之前可能尝试过调整grid的left和right来定位标签,但这次的问题是关于Y文字显示,可能需要类似的思路,调整grid的left值,确保Y有足够的空间。 另外,用户提到的是横向柱状图,Y通常是类目,位于左侧。所以,调整grid.left的值,增加左侧的空白区域,可以让Y的文字有更多空间显示。例如,将grid.left设置为更大的百分比,比如30%,而不是默认的10%或自动。 同时,检查Y配置项,如axisLabel,是否有设置width、overflow、或者formatter来处理文字显示。例如,使用formatter来截断过长的文字,添加省略号,这可以结合引用[2]中的方法,应用到Y的标签格式化上。 可能还需要考虑旋转Y标签,但横向柱状图中Y通常是垂直排列的,旋转可能不太适用。不过,调整字体大小或者行高也是可行的选项。 总结可能的解决方案步骤: 1. 调整grid的left值,增加Y区域宽度。 2. 设置Y的axisLabel属性,如调整字体大小、换行或截断。 3. 使用formatter函数截断文字并添加省略号。 4. 检查容器宽度,确保图表有足够的渲染空间。 需要确保用户按照这些步骤配置,并提供具体的代码示例,比如修改grid.left和axisLabel的配置项。同时,提醒用户如果容器本身宽度不够,即使调整配置也可能无效,需要确保外层容器足够宽。 最后,生成相关问题,帮助用户进一步解决可能遇到的类似问题,比如X标签显示不全、调整图表布局等。</think>### ECharts横向柱状图Y文字显示不全的解决方案 #### 1. 调整`grid`布局增加Y空间 通过修改`grid.left`参数,为Y文字预留更多空间。例如: ```javascript option = { grid: { left: '25%', // 根据文字长度调整比例(默认约10%-15%) right: '5%' }, yAxis: { type: 'category', axisLabel: { width: 200, // 直接指定标签区域宽度 overflow: 'truncate', // 超出部分截断 } } } ``` #### 2. 使用`axisLabel.formatter`控制文字显示 ```javascript yAxis: { axisLabel: { formatter: function(value) { if (value.length > 10) { // 设定最大字符数 return value.substring(0, 7) + '...'; // 截断并添加省略号 } return value; } } } ``` #### 3. 动态计算布局(适用于响应式场景) 参考引用[1]的宽度计算逻辑,可结合浏览器窗口大小监听: ```javascript function adjustYAxis(chart) { const maxLabelLength = Math.max(...chart.getOption().yAxis[0].data.map(item => item.length)); chart.setOption({ grid: { left: maxLabelLength * 8 + 30 } // 8px/字符 + 安全边距 }); } ``` #### 4. 强制换行显示 ```javascript yAxis: { axisLabel: { formatter: function(value) { return value.match(/.{1,4}/g).join('\n'); // 每4字符换行 } } } ``` #### 5. 检查容器尺寸 确保图表容器有足够宽度: ```html <div id="chart" style="width: 800px; height: 400px"></div> <!-- 或通过JS动态设置 --> chart.resize({ width: 800 }); ``` [^1]: 动态计算布局的实现参考了ECharts配置项联动方法 [^2]: 文字截断策略借鉴了可视化信息压缩的常用方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值