问题图如下:
解决问题后的效果图如下:
let arr = [
{
name: 'Evaporation',
text: 'Evaporation'
},
{
name: 'Precipitation',
text: 'Precipitation'
},
{
name: '温度',
text: '温度'
},
{
name: 'Videot',
text: '温度'
}
];
option = {
grid: {
top: '17%',
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
},
extraCssText: 'min-width:170px;',
formatter: function (params) {
var str = '';
str += '<div>' + params[0].name + '</div>';
params.forEach((item, index) => {
//注意!tooltip也需处理name
let name = arr.find((v) => v.name === params[index].seriesName).text;
str += `<div style='display: flex;justify-content: space-between;'><div>${item.marker} ${name}</div><span style='font-size:15px;font-weight:bold;'>${item.value}</span></div>`;
});
return str;
}
},
legend: [
{
orient: 'vertical',
right: 140,
data: [{ name: 'Evaporation' }, { name: 'Precipitation' }],//两个为一组
formatter: (name) => {
let showText = arr.find((v) => v.name === name).text;
return showText;
}
},
{
orient: 'vertical',
right: 50,
data: [{ name: '温度' }, { name: 'Videot' }], //两个为一组
formatter: (name) => {
let showText = arr.find((v) => v.name === name).text;
return showText;
}
}
],
xAxis: [
{
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisPointer: {
type: 'shadow'
}
}
],
yAxis: [
{
type: 'value',
name: 'Precipitation',
min: 0,
max: 250,
interval: 50,
axisLabel: {
formatter: '{value} ml'
}
},
{
type: 'value',
name: 'Temperature',
min: 0,
max: 25,
interval: 5,
axisLabel: {
formatter: '{value} °C'
}
}
],
series: [
{
name: 'Evaporation',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' ml';
}
},
data: [
2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3
]
},
{
name: 'Precipitation',
type: 'bar',
tooltip: {
valueFormatter: function (value) {
return value + ' ml';
}
},
data: [
2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3
]
},
{
name: '温度',
type: 'line',
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + ' °C';
}
},
itemStyle: {
normal: {
color: '#fac858',
lineStyle: {
color: '#fac858'
}
}
},
data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
},
,
{
name: 'Videot',
type: 'line',
yAxisIndex: 1,
tooltip: {
valueFormatter: function (value) {
return value + ' %';
}
},
itemStyle: {
normal: {
color: '#ee6666',
lineStyle: {
color: '#ee6666'
}
}
},
data: [3, 7, 3.8, 5, 8, 10.2, 12, 23.4, 23.0, 16.5, 12.0, 6.2]
}
]
};
若legend不换行,水平展示:
legend: {
orient: 'horizontal',
right: 50,
formatter: (name) => {
let showText = arr.find((v) => v.name === name).text;
return showText;
}
}