|
|
|
// 调性分布
|
|
|
|
export default function negaposiOption(dName = [], data = {}) {
|
|
|
|
// let newValue = [];
|
|
|
|
// dValue.forEach(ele => {
|
|
|
|
// newValue.push(ele*1-100);
|
|
|
|
// })
|
|
|
|
Array.prototype.sum = function () {
|
|
|
|
let x = 0
|
|
|
|
this.forEach(ele => {
|
|
|
|
x += Number(ele)
|
|
|
|
})
|
|
|
|
return x
|
|
|
|
}
|
|
|
|
const totalData = []
|
|
|
|
const msg = []
|
|
|
|
//切换成百分比
|
|
|
|
let newArr = []
|
|
|
|
for (let [index, i] of Object.keys(data).entries()) {
|
|
|
|
for (let j = 0; j < data[i].length; j++) {
|
|
|
|
if (newArr[j] == undefined) newArr[j] = []
|
|
|
|
newArr[j].push(data[i][j])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (let [index,i] of newArr.entries()) {
|
|
|
|
let sum = i.sum()
|
|
|
|
newArr[index] = i.map(ele => {
|
|
|
|
return ((Number(ele) / sum) * 100).toFixed(2)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
let newArr2 = []
|
|
|
|
for(let i of newArr ){
|
|
|
|
for(let j=0;j<i.length;j++){
|
|
|
|
if(newArr2[j]==undefined) newArr2[j]=[]
|
|
|
|
newArr2[j].push(i[j])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(let [index,i] of Object.keys(data).entries()){
|
|
|
|
data[i] = newArr2[index]
|
|
|
|
}
|
|
|
|
|
|
|
|
for (let [index, i] of Object.keys(data).entries()) {
|
|
|
|
msg.push(i)
|
|
|
|
let obj = {
|
|
|
|
name: i,
|
|
|
|
type: 'bar',
|
|
|
|
barWidth: 12,
|
|
|
|
stack: 'Total',
|
|
|
|
label: {
|
|
|
|
show: false,
|
|
|
|
position: 'right',
|
|
|
|
formatter: function (params) {
|
|
|
|
return (params.data) + '%';
|
|
|
|
},
|
|
|
|
},
|
|
|
|
itemStyle: {
|
|
|
|
normal: {
|
|
|
|
barBorderRadius: '',
|
|
|
|
color: '#20cd61'
|
|
|
|
},
|
|
|
|
},
|
|
|
|
emphasis: {
|
|
|
|
focus: 'series'
|
|
|
|
},
|
|
|
|
data: data[i]
|
|
|
|
}
|
|
|
|
if (index == 0) {
|
|
|
|
obj.itemStyle.normal.barBorderRadius = [12, 0, 0, 12]
|
|
|
|
obj.itemStyle.normal.color = '#0283ff'
|
|
|
|
} else if (index == Object.keys(data).length - 1) {
|
|
|
|
obj.itemStyle.normal.barBorderRadius = [0, 12, 12, 0]
|
|
|
|
obj.itemStyle.normal.color = '#fec000'
|
|
|
|
}
|
|
|
|
totalData.push(obj)
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
tooltip: {
|
|
|
|
trigger: 'axis',
|
|
|
|
axisPointer: {
|
|
|
|
type: 'shadow'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
legend: {
|
|
|
|
data: msg,
|
|
|
|
left: 10,
|
|
|
|
// data:[{name:'正面'},{name:'中性'},{name:'负面'},]
|
|
|
|
textStyle: { //图例文字的样式
|
|
|
|
color: 'black',
|
|
|
|
fontSize: 8
|
|
|
|
},
|
|
|
|
itemWidth: 12,
|
|
|
|
itemHeight: 16,
|
|
|
|
borderRadius: 1,
|
|
|
|
},
|
|
|
|
grid: {
|
|
|
|
bottom: 20,
|
|
|
|
height: 140,
|
|
|
|
left: 10,
|
|
|
|
containLabel: true
|
|
|
|
},
|
|
|
|
xAxis: [{
|
|
|
|
type: 'value',
|
|
|
|
show: false
|
|
|
|
}],
|
|
|
|
yAxis: [{
|
|
|
|
type: 'category',
|
|
|
|
inverse: true,
|
|
|
|
axisTick: {
|
|
|
|
show: false
|
|
|
|
},
|
|
|
|
axisLine: {
|
|
|
|
show: false
|
|
|
|
},
|
|
|
|
axisLabel: {
|
|
|
|
margin: 10,
|
|
|
|
fontSize: 12
|
|
|
|
},
|
|
|
|
data: dName
|
|
|
|
}],
|
|
|
|
series: totalData
|
|
|
|
// [
|
|
|
|
// {
|
|
|
|
// name: '男',
|
|
|
|
// type: 'bar',
|
|
|
|
// barWidth:12,
|
|
|
|
// stack: 'Total',
|
|
|
|
// label: {
|
|
|
|
// show: false,
|
|
|
|
// position: 'right',
|
|
|
|
// formatter: function (params) {
|
|
|
|
// return (params.data)+'%';
|
|
|
|
// },
|
|
|
|
// },
|
|
|
|
// itemStyle:{
|
|
|
|
// normal:{
|
|
|
|
// barBorderRadius:[12,0,0,12],
|
|
|
|
// color: '#0084FF'
|
|
|
|
// },
|
|
|
|
// },
|
|
|
|
// emphasis: {
|
|
|
|
// focus: 'series'
|
|
|
|
// },
|
|
|
|
// data: dMan
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name: '女',
|
|
|
|
// type: 'bar',
|
|
|
|
// barWidth:12,
|
|
|
|
// stack: 'Total',
|
|
|
|
// label: {
|
|
|
|
// show: false,
|
|
|
|
// position: 'right',
|
|
|
|
// formatter: function (params) {
|
|
|
|
// return (params.data)+'%';
|
|
|
|
// },
|
|
|
|
// },
|
|
|
|
// itemStyle:{
|
|
|
|
// normal:{
|
|
|
|
// color: '#20cb65'
|
|
|
|
// },
|
|
|
|
// },
|
|
|
|
// emphasis: {
|
|
|
|
// focus: 'series'
|
|
|
|
// },
|
|
|
|
// data: dLady
|
|
|
|
// },
|
|
|
|
// {
|
|
|
|
// name: '未设置性别',
|
|
|
|
// type: 'bar',
|
|
|
|
// barWidth:12,
|
|
|
|
// stack: 'Total',
|
|
|
|
// label: {
|
|
|
|
// show: false,
|
|
|
|
// position: 'left',
|
|
|
|
// formatter: function (params) {
|
|
|
|
// return (params.data) +'%';
|
|
|
|
// },
|
|
|
|
// },
|
|
|
|
// itemStyle:{
|
|
|
|
// normal:{
|
|
|
|
// barBorderRadius:[0,12,12,0],
|
|
|
|
// color: '#FFBF00',
|
|
|
|
// },
|
|
|
|
// },
|
|
|
|
// emphasis: {
|
|
|
|
// focus: 'series'
|
|
|
|
// },
|
|
|
|
// data: noGender
|
|
|
|
// }
|
|
|
|
// ]
|
|
|
|
};
|
|
|
|
}
|