配置项如下
let tdata = [
{ code: '公安机关', stock: '19785', fundPost: '19785' },
{ code: '住房和城乡建筑部门', stock: '16064', fundPost: '16064' },
{ code: '教育管理部门', stock: '14319', fundPost: '14319' },
{ code: '交通部门', stock: '13100', fundPost: '13100' },
{ code: '其他', stock: '12054', fundPost: '12054' },
];
function contains(arr, dst) {
var i = arr.length;
while ((i -= 1)) {
if (arr[i] == dst) {
return i;
}
}
return false;
}
var attackSourcesColor = [
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#EB3B5A' },
{ offset: 1, color: '#FE9C5A' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#FA8231' },
{ offset: 1, color: '#FFD14C' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#F7B731' },
{ offset: 1, color: '#FFEE96' },
]),
new echarts.graphic.LinearGradient(0, 1, 1, 1, [
{ offset: 0, color: '#395CFE' },
{ offset: 1, color: '#2EC7CF' },
]),
];
var attackSourcesColor1 = [
'#EB3B5A',
'#FA8231',
'#F7B731',
'#3860FC',
'#1089E7',
'#F57474',
'#56D0E3',
'#1089E7',
'#F57474',
'#1089E7',
'#F57474',
'#F57474',
];
var attaData = [];
var attaName = [];
var topName = [];
tdata.forEach((it, index) => {
attaData[index] = parseFloat(it.fundPost).toFixed(2);
attaName[index] = it.stock;
topName[index] = `${it.code} ${it.stock}`;
});
var salvProMax = []; //背景按最大值
for (let i = 0; i < attaData.length; i++) {
salvProMax.push(attaData[0]);
}
function attackSourcesDataFmt(sData) {
var sss = [];
sData.forEach(function (item, i) {
let itemStyle = {
color: i > 3 ? attackSourcesColor[3] : attackSourcesColor[i],
};
sss.push({
value: item,
itemStyle: itemStyle,
});
});
return sss;
}
option = {
backgroundColor: '#000',
tooltip: {
show: false,
backgroundColor: 'rgba(3,169,244, 0.5)', //背景颜色(此时为默认色)
textStyle: {
fontSize: 16,
},
},
color: ['#F7B731'],
legend: {
show: false,
pageIconSize: [12, 12],
itemWidth: 20,
itemHeight: 10,
textStyle: {
//图例文字的样式
fontSize: 10,
color: '#fff',
},
selectedMode: false,
// data: ['个人所得(亿元)'],
},
grid: {
left: '5%',
right: '2%',
width: '80%',
bottom: '2%',
top: '8%',
containLabel: true,
},
xAxis: {
type: 'value',
splitLine: {
show: false,
},
axisLabel: {
show: false,
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
},
yAxis: [
{
type: 'category',
inverse: true,
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisPointer: {
label: {
show: true,
//margin: 30
},
},
pdaaing: [5, 0, 0, 0],
postion: 'right',
data: attaName,
axisLabel: {
show: false,
margin: 30,
fontSize: 10,
align: 'left',
padding: [2, 0, 0, 0],
color: '#000',
rich: {
nt1: {
color: '#fff',
backgroundColor: attackSourcesColor1[0],
width: 13,
height: 13,
fontSize: 10,
align: 'center',
borderRadius: 100,
lineHeight: '5',
padding: [0, 1, 2, 1],
// padding:[0,0,2,0],
},
nt2: {
color: '#fff',
backgroundColor: attackSourcesColor1[1],
width: 13,
height: 13,
fontSize: 10,
align: 'center',
borderRadius: 100,
padding: [0, 1, 2, 1],
},
nt3: {
color: '#fff',
backgroundColor: attackSourcesColor1[2],
width: 13,
height: 13,
fontSize: 10,
align: 'center',
borderRadius: 100,
padding: [0, 1, 2, 1],
},
nt: {
color: '#fff',
backgroundColor: attackSourcesColor1[3],
width: 13,
height: 13,
fontSize: 10,
align: 'center',
// lineHeight: 3,
borderRadius: 100,
padding: [0, 1, 2, 1],
lineHeight: 5,
},
},
formatter: function (value, index) {
index = contains(attaName, value) + 1;
if (index - 1 < 3) {
return ['{nt' + index + '|' + index + '}'].join('\n');
} else {
return ['{nt|' + index + '}'].join('\n');
}
},
},
},
{
type: 'category',
inverse: true,
axisTick: 'none',
axisLine: 'none',
show: true,
axisLabel: {
textStyle: {
color: '#fff',
fontSize: '20',
},
},
data: attackSourcesDataFmt(attaName),
},
{
//名称
type: 'category',
offset: 10,
position: 'left',
axisLine: {
show: false,
},
inverse: true,
axisTick: {
show: false,
},
axisLabel: {
show: true,
interval: 0,
color: ['#fff'],
// align: 'left',
// verticalAlign: 'bottom',
lineHeight: 32,
fontSize: 10,
},
data: topName,
},
],
series: [
{
zlevel: 1,
name: '',
type: 'bar',
barWidth: '26px',
animationDuration: 1500,
data: attackSourcesDataFmt(attaData),
align: 'center',
itemStyle: {
normal: {
barBorderRadius: 13,
},
},
label: {
show: false,
fontSize: 10,
color: '#fff',
textBorderWidth: 2,
padding: [2, 0, 0, 0],
},
},
{
name: '',
type: 'bar',
barWidth: 26,
barGap: '-100%',
margin: '20',
data: salvProMax,
textStyle: {
//图例文字的样式
fontSize: 10,
color: '#fff',
},
itemStyle: {
normal: {
color: '#142831',
//width:"100%",
fontSize: 10,
//barBorderRadius: 30,
},
},
},
],
};