配置项如下
let chartData = {
xdata: ['01/01', '01/02', '01/03', '01/04', '01/05'],
currentYearList: [10, 20, 30, 40, 50],
lastYearList: [20, 10, 30, 40, 20],
rateDataOne: [10, 40, 20, 30, 50],
};
let dataZoomFlag = false;
let zoomEnd = 100;
if (chartData.xdata.length > 6) {
dataZoomFlag = true;
zoomEnd = 60;
}
// tooltip
const tooltip = {
trigger: 'axis',
textStyle: {
fontSize: '100%',
},
formatter: (params) => {
let rander = params
.map((item) =>
item.seriesType !== 'pictorialBar'
? `<div>${item.seriesName}: ${item.seriesType !== 'line' ? item.value : item.value + '%'}</div>`
: ''
)
.join('');
return `
<div>${params[0].axisValue}</div>
${rander}
`;
},
};
const dataZoom = [
{
show: dataZoomFlag,
// realtime: true,
height: 8,
start: 0,
textStyle: {
show: false,
},
end: zoomEnd,
borderColor: 'rgba(255,255,255,0.2)',
backgroundColor: 'rgba(255,255,255,0.1)',
bottom: '1%',
},
{
type: 'inside',
// realtime: true,
start: 0,
end: 100,
},
];
const grid = {
top: '40',
left: '8%',
right: '3%',
height: '70%',
width: '83%',
};
// xAxis
const xAxis = {
axisTick: {
show: false,
},
axisLine: {
lineStyle: {
color: 'rgba(255,255,255, .2)',
},
},
axisLabel: {
textStyle: {
fontSize: 12,
color: 'rgba(255,255,255, 1)',
},
},
data: chartData.xdata,
};
// yAxis
const yAxis = [
{
name: '',
nameTextStyle: {
color: 'rgb(250,250,250,.7)',
fontSize: 12,
padding: [0, 25, 0, 0],
},
axisTick: {
show: false,
},
axisLine: {
show: false,
},
splitLine: {
lineStyle: {
type: 'dotted',
color: 'rgba(255,255,255, .2)',
},
},
axisLabel: {
textStyle: {
fontSize: 12,
color: 'rgba(255,255,255, .7)',
},
},
},
{
name: '%',
nameTextStyle: {
color: 'rgb(250,250,250,.7)',
fontSize: 12,
padding: [0, 0, 0, 40],
},
show: true,
splitLine: {
show: false,
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
axisLabel: {
textStyle: {
fontSize: 12,
color: 'rgba(255,255,255, .7)',
},
},
},
];
// series
const series = [
{
z: 1,
name: '上部1',
type: 'pictorialBar',
symbolPosition: 'end',
data: chartData.currentYearList,
symbol: 'diamond',
symbolOffset: ['-25%', '-50%'],
symbolSize: [9, 6],
itemStyle: {
borderColor: '#1AA0FF',
color: '#1AA0FF',
},
},
{
z: 1,
type: 'bar',
name: '今年',
barWidth: 10,
barGap: '-50%',
data: chartData.currentYearList,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgba(26,160,255,.7)',
},
{
offset: 1,
color: 'rgba(3,14,55,0.6)',
},
]),
},
},
{
z: 2,
name: '上部1',
type: 'pictorialBar',
symbolPosition: 'end',
data: chartData.lastYearList,
symbol: 'diamond',
symbolOffset: ['28%', '-50%'],
symbolSize: [9, 6],
itemStyle: {
borderColor: '#1CD0BA',
color: '#1CD0BA',
},
},
{
z: 2,
type: 'bar',
name: '去年',
barWidth: 10,
data: chartData.lastYearList,
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgba(28,208,186,.7)',
},
{
offset: 1,
color: 'rgba(3,14,55,0.6)',
},
]),
},
},
{
z: 9,
yAxisIndex: 1,
name: '增幅',
type: 'line',
showAllSymbol: true,
symbol: 'circle',
symbolSize: 5,
itemStyle: {
color: '#FFBD46',
width: 2,
shadowColor: '#FFBD46',
shadowBlur: 3,
},
lineStyle: {
width: 1,
color: '#FFBD46',
},
data: chartData.rateDataOne,
},
];
option = {
backgroundColor:"#313131",
tooltip,
dataZoom,
xAxis,
yAxis,
series,
grid,
};