|
|
|
@ -17,6 +17,31 @@ function doWordCloud(data) {
|
|
|
|
|
}
|
|
|
|
|
return arr1;
|
|
|
|
|
}
|
|
|
|
|
// 气泡大小算法
|
|
|
|
|
function bubbleDivide(val, maxVal, size) {
|
|
|
|
|
let percent = val / maxVal * 1.00;
|
|
|
|
|
if (0.15<percent<=0.25) {
|
|
|
|
|
return size * 1.5;
|
|
|
|
|
} else if (0.25<percent<=0.35) {
|
|
|
|
|
return size * 2.7;
|
|
|
|
|
} else if (0.35<percent<=0.45) {
|
|
|
|
|
return size * 3.6;
|
|
|
|
|
} else if (0.45<percent<=0.52) {
|
|
|
|
|
return size * 4.3;
|
|
|
|
|
} else if (0.52<percent<=0.58) {
|
|
|
|
|
return size * 4.9;
|
|
|
|
|
} else if (0.58<percent<=0.66) {
|
|
|
|
|
return size * 5.4;
|
|
|
|
|
} else if (0.66<percent<=0.80) {
|
|
|
|
|
return size * 5.8;
|
|
|
|
|
} else if (0.80<percent<=0.90) {
|
|
|
|
|
return size * 6.1;
|
|
|
|
|
} else if (0.90<percent<=1.00) {
|
|
|
|
|
return size * 6.3;
|
|
|
|
|
} else {
|
|
|
|
|
return size * 1.0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 创建词云的对象
|
|
|
|
|
function bubbleChart(data = [], format = []) {
|
|
|
|
|
let [maxValue, temp] = [0, []];
|
|
|
|
@ -74,22 +99,8 @@ function bubbleChart(data = [], format = []) {
|
|
|
|
|
let bakeColor = [...color];
|
|
|
|
|
// 气泡数据
|
|
|
|
|
let bubbleData = [];
|
|
|
|
|
// 气泡基础大小
|
|
|
|
|
let basicSize = 20;
|
|
|
|
|
// 节点之间的斥力因子,值越大,气泡间距越大
|
|
|
|
|
let repulsion = 380;
|
|
|
|
|
// 根据气泡数量配置基础大小和斥力因子(以实际情况进行适当调整,使气泡合理分布)
|
|
|
|
|
if (data.length >= 5 && data.length < 10) {
|
|
|
|
|
basicSize = 20;
|
|
|
|
|
repulsion = 230;
|
|
|
|
|
}
|
|
|
|
|
if (data.length >= 10 && data.length < 20) {
|
|
|
|
|
basicSize = 30;
|
|
|
|
|
repulsion = 150;
|
|
|
|
|
} else if (data.length >= 20) {
|
|
|
|
|
basicSize = 40;
|
|
|
|
|
repulsion = 65;
|
|
|
|
|
}
|
|
|
|
|
let basicSize = 20; //基础大小
|
|
|
|
|
let repulsion = 90; //斥力因子
|
|
|
|
|
// 填充气泡数据数组bubbleData
|
|
|
|
|
for (let item of data) {
|
|
|
|
|
// 确保气泡数据条数少于或等于气泡颜色数组大小时,气泡颜色不重复
|
|
|
|
@ -102,8 +113,8 @@ function bubbleChart(data = [], format = []) {
|
|
|
|
|
colorSet.delete(curColor);
|
|
|
|
|
bakeColor = [...colorSet];
|
|
|
|
|
// 气泡大小设置
|
|
|
|
|
let size = (item[format[1]] * basicSize * 2) / maxValue;
|
|
|
|
|
if (size < basicSize) size = basicSize;
|
|
|
|
|
//let size = (item[format[1]] * basicSize * 2) / maxValue;
|
|
|
|
|
let size = bubbleDivide(item[format[1]],maxValue,basicSize);
|
|
|
|
|
|
|
|
|
|
bubbleData.push({
|
|
|
|
|
name: item[format[0]],
|
|
|
|
|