echarts2.0的formatter显示过长问题

本文介绍如何使用ECharts 2.0优化饼图Tooltip的显示方式,通过字符串处理技巧实现自动换行,解决过长文本显示不全的问题。

使用echarts2.0(不要问为啥不使用3.0,因为做的是在别人的代码上添加内容,所以人家用2.0我也用2.0),中间用到了饼图,之前定义的formatter代码如下:

optionPie = {
    title : {
        text: '观点类别分析',
        subtext: 'FD类别',
        x:'center'
    },
    tooltip : {
        trigger: 'item',
       formatter: function(param){
    	   var ClusterID=mapNameCluster[param.name];
   	       //alert("观点"+ClusterID);
           var str = "观点"+ClusterID+"总结:"+summary[param.name];
           return str;
       }
    },
    legend: {
        orient : 'vertical',
        x : 'right',
        y : 'top',
        data:clusterNames
    },
    toolbox: {
        show : true,
        x:'left',
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {
                show: true, 
                type: ['pie', 'funnel'],
                option: {
                    funnel: {
                        x: '25%',
                        width: '50%',
                        funnelAlign: 'left',
                        max: 1,
                        tooltip : {
                            trigger: 'item',
                            formatter: "{b}:{c}"
                            },
                        itemStyle:{ 
                            normal:{ 
                            label:{ 
                              show: true, 
                              formatter: '{b}' 
                            }, 
                            labelLine :{show:true} 
                          }
                        }
                    }
                }
            },
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    calculable : true,
    series : [
        {
            name:'类的比重',
            type:'pie',
            radius : '55%',
            center: ['50%', '60%'],
            data:pieData,
            itemStyle:{ 
                normal:{ 
                      label:{ 
                        show: true, 
                        formatter: '{b}:({d}%)' 
                      }, 
                      labelLine :{show:true} 
                    } 
                } 
            	
        }
    ]
};
function eConsole(param) {
	 var ClusterID=mapNameCluster[param.name];
	    //alert("观点"+ClusterID);
    //var str = "观点"+ClusterID+"总结:"+summary[param.name];
    //alert(str);
    curpage=parseInt(ClusterID);
    
    //alert(curpage);
    getTableData();
    ajax_ClusterUserGraph(ClusterID);
    
}
var myChart1 = echarts.init(document.getElementById('cluterPie')); 
myChart1.setOption(optionPie);
myChart1.on('click', eConsole);

因为str这个变量从数据库取出来之后特别特别长,而tooltip的formatter默认显示一行,结果就变得特别特别长,根本显示不完。解决办法很简单,就是用split函数与join函数配合,在字符串中插入换行符(注意是插入html换行,而不是\n,之前脑子抽了,一直插入\n没反应……)

formatter: function(param){
    	   var ClusterID=mapNameCluster[param.name];
   	       //alert("观点"+ClusterID);
           var str = "观点"+ClusterID+"总结:"+summary[param.name];
           var arr = str.split('');
           //console.log(arr);
           for (var i = 24; i < arr.length; i += 25) ///25字换行
        	   {
        	      arr[i] += '</br>';
        	   }
             //alert(arr.join(''));
              str=arr.join("") 
           return str;
       }
问题解决!


不过现在还有另外一个问题,就是这样虽然横向不长,但是纵向特别长,当tooltip接近到图的边缘的时候,tooltip就在不断重新加载,目前还没找到合适的办法解决,临时的解决办法是调整换行的字数到一个比较合理的位置,并把图的高度设高一点= =。

### ECharts 例配置详解 #### 自定义形及其样式设置 在ECharts中,例组件`legend`允许用户通过多种方式来自定义例的外观。然而,在尝试修改某些特定样式的属性时,这些更改可能不会反映到自定义形上[^1]。 为了实现更复杂的定制需求,可以利用`formatter`函数来动态调整例文本的内容与显示形式。此功能使得开发者能够灵活控制每个例项如何呈现给最终用户。 ```javascript option = { legend: { data: ['系列A', '系列B'], formatter: function (name) { if (name === '系列A') { return '这是经过格式化的' + name; } return name; } }, }; ``` #### 常见表类型的例配置实例 对于不同类型的表(如柱状、线、饼),可以通过指定`type`参数来进行切换[^2]。下面给出了一段简单的JavaScript代码片段作为示例: ```javascript var myChart = echarts.init(document.getElementById('main')); // 指定表的配置项和数据 option = { title: { text: '某地区蒸发量和降水量' }, tooltip: {trigger: 'axis'}, toolbox: {feature: {}}, calculable: true, xAxis: [ {type: 'category', boundaryGap: false, data: ["1月", "2月", "3月"]} ], yAxis: [{type: 'value'}], series: [ { name:'蒸发量', type:'line',// 设置表类型为折线 data:[2.0, 4.9, 7.0] }, { name:'降水量', type:'bar',// 设置表类型为柱状 data:[2.6, 5.9, 9.0] } ] }; myChart.setOption(option); ``` 上述例子展示了如何在同一张表里混合使用两种不同的表类型——即线形(line chart) 和条形(bar chart),并为其设置了相应的例描述。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值