关于echarts中Y轴左侧文字显示不全的解决办法

今天在项目的开发中遇到的一个问题,echarts Y轴左侧的文字太多了,显示不全,由于这个问题网上的解决办法相对较少,所以记录一下。

先说一下网上的版本:

1.调整grid下的left属性,说白了就是调整y轴与左侧的距离,大了就能显示更多的文字

grid:{
    top:48,
    left:400,// 调整这个属性
    right:50,
    bottom:50,
}

这个的缺陷很明显,文字太多还是不管事 ,而且看起来很别扭

2.通过设置axisLabel下的formatter属性,实现自定义处理文字,将多出来的用省略号替代

yAxis:{
    axisLabel:{
        show:true,
        formatter:function(value){
            var texts=value;
            if(texts.length>15){ // 具体多少字就看自己了
                texts=texts.substr(0,15)+'...';
            }
            return texts;
        }
    }
}

这个是比较合适的方法,将过长的文字用省略号替代了,鼠标放到图形上往往可以通过设置tooltip看到全称。

但是也有一个缺陷,当这个对应的图形不存在,就是没有数据的时候,你是不知道它的全称的

3.这个就是针对上面所说的缺陷所进行的处理,增加鼠标放置到y轴上显示悬浮框显示全称

// 项目是用vue写的
that.chart.on('mouseover',function(e){
    const component=e.componentType;
    const value=e.value;
    const offsetX=e.event.offsetX;
    const offsetY=e.event.offsetY;
    if(component==='yAxis'){
        $('#图表的容器id').find('.echarts_tip').remove();
        $('#图表的容器id').append(`
                <div class="echarts_tip" style="top:${offsetY}px;left:${offsetX}px;">
                    ${value}
                </div>
            `)
    }   
})

that.chart.on('mouseout',function(e){
    const component=e.componentType;
    if(conponent==='yAxis'){
        $('#图表的容器id').find('.echarts_tip').remove();
    }
})

css代码:

.echarts_tip{
    position:absolute;
    border-radius:5px;
    background:rgba(0,0,0,.5);
    color:#FFF;
    padding:10px 20px;
}

其实就是通过监听echarts的鼠标事件,然后在进行对应的处理。对于大多数的项目来说这个可能是有点多此一举了,因为大部分的图表都会有对应的数据的,只需要设置tooltip就可以了。只是我的项目中遇到了这样的问题(对应的时间段内没有数据),记录一下,希望能够帮到别人吧。

  • 14
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要解决echarts柱状图y轴文字不全的问题,可以使用echarts的graphic属性来自定义y轴的名称。根据引用的代码,我们可以通过设置graphic属性来添加自定义的文字。具体步骤如下: 1. 在setOption方法,找到yAxis这个属性,并判断它是否为数组。 2. 如果是数组,遍历yAxis数组,对每个y轴进行处理。 3. 定义一个graphicObj对象,设置type为'text',top为文字在图表的高度,style设置文字的样式,包括文字内容、字体大小和颜色等。 4. 根据y轴的索引,判断是左对齐还是右对齐,分别设置left或right属性。 5. 将graphicObj对象添加到obj.graphic数组。 6. 最后返回处理后的obj对象。 通过以上步骤,可以实现自定义y轴的名称,并解决y轴文字不全的问题。此方法不改变echarts图表的样式,保持页面的美观。参考引用的说明。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue-echarts 柱状图Y轴Name因为数据过小导致显示不全的问题& legend(图例)和Y轴文字自适应对齐](https://blog.csdn.net/weixin_42623929/article/details/130725082)[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_1"}}] [.reference_item style="max-width: 50%"] - *3* [echarts x轴文字过长悬浮显示.rar](https://download.csdn.net/download/qq_29988051/11463177)[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_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值