echarts2 饼图标签文字换行

在使用echarts2的过程中,有时会遇到标签文字过长导致显示不完整的问题。例如:

在这里插入图片描述
这时候就需要用到 标签里的formatter 回调函数来处理这种情况了。

方式一: formatter : ’ {b} : \n {c} \n ({d}%) ', 这种是指定某个地方换行。

在这里插入图片描述
** 备注:官方文档里面有{a},{b},{c},{d}的解释:**

在这里插入图片描述

这里是饼图,所以 { b } 就是数据项的名称即:“直接访问”,“邮件营销直”等。

{ c }就是数据项下面的那个数值

{ d }就是下面的那个百分比

注意:在饼图里如果是tootip里面的formatter,
    那么 \n 要换成 <br />才能达到换行的效果。其它图没试过,不知道是否一样。

方式二:自定义函数来处理达到自定义每行个数再换行

formatter:get//调用get
textStyle:{       //这只是为了让文字居中而已
  align:"center",            //水平对齐方式可选left,right,center
  baseline:"top",    //垂直对齐方式可选top,bottom,middle
},

 
 

然后在最外面定义一个函数表达式

var get=function(e){
     var newStr=" ";
        var start,end;
     var name_len=e.name.length;                   //每个内容名称的长度
     var max_name=4;                      //每行最多显示的字数
     var new_row = Math.ceil(name_len / max_name);     // 最多能显示几行,向上取整比如2.1就是3行
     if(name_len>max_name){                 //如果长度大于每行最多显示的字数
        for(var i=0;i<new_row;i++){               //循环次数就是行数
           var old='';                        //每次截取的字符
           start=i*max_name;                   //截取的起点
           end=start+max_name;               //截取的终点
           if(i==new_row-1){                   //最后一行就不换行了
              old=e.name.substring(start);
           }else{
              old=e.name.substring(start,end)+"\n";    
           }
              newStr+=old; //拼接字符串
         }
      }else{                                          //如果小于每行最多显示的字数就返回原来的字符串
        newStr=e.name; 
      }
     return newStr;
  }

 
 

结果为:
在这里插入图片描述

我使用的是echart2,不知道echart3的function(e)中 e 的内容是否一样。无论是条形图或者其他的图,换行的思路都是一样的,都是先获取名称再进行换行处理。

再补充一点:

在这里插入图片描述

要想让内容在饼图里并居中除了要处理换行之外,还需要添加如下四个属性:

series:{
    itemstyle:{
      normal:{
        label:{
          position:"inner",       //可选参数:外部 “outer” 和内部 “inner”  
          textStyle:{
            align:"center",
            baseline:"middle",
          },
        },
        lableLine:{
          show:false                           //标签视觉引导线 不显示
        }
      }
    }
  }

 
 

如果想只每行一个字显示:

formatter:function(e){
  return e.split("").join("\n");   //这里的e直接就是字符串,如果不是的话,还需要获取到字符串再进行操作
}

 
 
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
echarts中,饼图的图例默认是一横排展示的。如果图例文字过长或者图例数目过多时,可能会出现图例与图表标题重合或展示效果不佳的情况。 然而,echarts目前并没有提供直接的属性或方法来实现图例的自动换行。但是,我们可以通过调整图表的大小、位置和布局等方式来实现图例的自动换行效果。另外,也可以考虑使用图例滚动(legendScroll)等特性来优化图例的展示效果。 综上所述,要实现echarts饼图图例的自动换行,我们可以尝试以下方法: 1. 调整图表的大小和位置,确保图例与图表标题不会重叠,并且能够容纳所有图例。这可以通过设置chart的width和height属性来实现。 2. 调整图表的布局,将图例放置在合适的位置,避免与其他图表元素重叠。可以使用legend的left、right、top和bottom属性来控制图例的位置。 3. 使用图例滚动(legendScroll)特性来优化图例的展示效果。这样可以在图例过多时,通过滚动来查看所有的图例。可以通过设置legend的type为'scroll'来启用图例滚动特性。 请根据实际需求选择适合的方法来实现echarts饼图图例的自动换行。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [echarts 图例换行](https://blog.csdn.net/weixin_43885687/article/details/88843924)[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://download.csdn.net/download/embrace924/10631754)[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://blog.csdn.net/weixin_48911357/article/details/124929941)[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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值