使用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就在不断重新加载,目前还没找到合适的办法解决,临时的解决办法是调整换行的字数到一个比较合理的位置,并把图的高度设高一点= =。