配置项如下
var dataAll = [
[
[0.16, 1800.04, 'xx站'],
[0.1, 1700.04, 'ff站'],
[0.05, 1090.04, 'gg站'],
[0.18, 3008.04, '00站'],
[0.25, 800.04, '555站'],
[0.06, 600.04, 'hbvgv站'],
[0.09, 2007.04, 'kkkkk站'],
[0.09, 2007.04, '66662'],
]
];
var customData = [{
name: '搞销售&低损耗区域',
value: [0.02, 3400, 60, 70],
itemStyle: {
color: 'rgba(17, 114, 201, 1)'
}
},
{
name: '高销售&高损耗区域',
value: [0.252, 3400, 120, 60],
itemStyle: {
color: 'rgba(232, 206, 34, 1)'
}
},
{
name: '低销售&低损耗区域',
value: [0.012, 800, 100, 60],
itemStyle: {
color: 'rgba(232, 206, 34, 1)'
}
},
{
name: '低销售&高损耗区域',
value: [0.233, 800, 100, 60],
itemStyle: {
color: 'rgba(243, 46, 5, 1)'
}
},
]
function getMinAndMax(data) {
var xAxis = data.map(item => item[0]);
var yAxis = data.map(item => item[1]);
var xAxisMin = Math.min(...xAxis);
var xAxisMax = Math.max(...xAxis);
var yAxisMin = Math.min(...yAxis);
var yAxisMax = Math.max(...yAxis);
return {
yAxisMin: yAxisMin > 0 ? Math.ceil(yAxisMin) : -1 * Math.ceil(-1 * yAxisMin),
yAxisMax: yAxisMax > 0 ? Math.ceil(yAxisMax) : -1 * Math.ceil(-1 * yAxisMax),
xAxisMin: xAxisMin > 0 ? Math.ceil(xAxisMin * 100) / 100 : -1 * Math.ceil(-1 * xAxisMin * 100) / 100,
xAxisMax: xAxisMax > 0 ? Math.ceil(xAxisMax * 100) / 100 : -1 * Math.ceil(-1 * xAxisMax * 100) / 100
}
}
var xy = getMinAndMax(dataAll[0]);
option = {
title: {
text: '销售额&商品损耗率分布-华北',
left: 'center',
top: 0
},
grid: {
left: '3%',
right: '7%',
bottom: '3%',
containLabel: true
},
tooltip: {
trigger: "axis",
formatter: function(params, index) {
var content = [];
params.forEach(item => {
const str = `${item.marker}${item.data[2]}<br> 销售额:${item.data[1]}
<br> 商品损耗率:${item.data[0] * 100}%`;
content.push(str)
})
return content.join('<br>')
}
},
xAxis: [{
type: 'value',
axisLabel: {
formatter: function(value, index) {
return value * 100 + '%'
}
},
axisLine: {
show: false
},
axisTick: {
show: false
}
}],
yAxis: [{
type: 'value',
axisLabel: {
formatter: '{value}'
},
axisLine: {
show: false
},
axisTick: {
show: false
}
}],
series: [{
name: '男性',
type: 'scatter',
data: dataAll[0],
label: {
show: true,
position: 'top',
color: '#000',
formatter: function(param) {
return param.data[2];
},
},
labelLine: {
show: true
},
itemStyle: {
shadowBlur: 10,
shadowColor: 'rgba(17, 114, 201, 0.2)',
shadowOffsetY: 5,
color: 'rgba(17, 114, 201, 1)'
},
markLine: {
silent: true,
symbol: 'none',
lineStyle: {
normal: {
color: 'red',
type: 'solid',
width: 2
}
},
label: {
color: '#000'
},
data: [{
yAxis: 1500,
name: '商品损耗率',
label: {
distance: 10,
formatter: function(params) {
return params.name;
}
}
},
{
xAxis: 0.1,
name: '销售额',
label: {
distance: 10,
formatter: function(params) {
return params.name;
}
}
}
]
}
}, {
type: 'custom',
renderItem: renderItem,
z: 1,
itemStyle: {
color: '#dae9f5',
barBorderRadius: 5
},
silent: true,
legendHoverLink: false,
tooltip: {
show: false
},
label: {
show: true,
position: 'inside',
//align:"left",
color: '#000',
formatter: function paramss(params) {
if (params.data.value) {
return params.data.name.replace(/(.{4})/g, function(i) {
return i + '\n';
})
//return params.data.name;
}
return ''
}
},
data: customData
}]
};
function renderItem(params, api) {
var yAvlue = api.value(1);
console.log(api.value(1), 'api.value(1)')
var start = api.coord([api.value(0), yAvlue]);
var style = api.style();
var width = api.value(2) || 60;
var height = api.value(3) || 70;
return {
type: 'rect',
shape: {
x: start[0],
y: start[1],
width: width,
height: height,
r: 5
},
style: style
};
}