plot = new MultiView('container', {
meta: {
date: { sync: true },
minTemp: { min: 0, max: 30 },
maxTemp: { min: 0, max: 30 },
values: { min: 0, max: 30 },
},
tooltip: {
showMarkers: false,
enterable: true,
domStyles: {
'g2-tooltip': {
width: '200px',
padding: 0,
},
},
customContent: (title, items) => {
const data = items[0]?.data || {};
const titleDom = `<div class ="custom-tooltip-title">${data.date}</div>`;
const tempDom = `<div class = "custom-tooltip-value"><div class = "custom-tooltip-temp"><span>低温</span><span>${data.minTemp}</span></div><div class = "custom-tooltip-temp"><span>高温</span><span>${data.maxTemp}</span></div></div>`;
const windDom = `<div class = "custom-tooltip-wind"><span>风向:${data.windDir}</span><span>风速:${data.windSpeed}</span></div>`;
let domClass;
if (data.rain === true) {
domClass = 'rain';
} else if (data.sunny === true) {
domClass = 'sun';
} else {
domClass = 'cloud';
}
return `<div class="background-image ${domClass}">${titleDom}${tempDom}${windDom}<div class="tooltip-footer">打开 <a href="https://weather.com/zh-CN/weather/today/l/CHXX0008:1:CH" target="_blank">天气预报网 ☁️</a></div></div>`;
},
},
views: [
{
data: data.map((d) => {
return { ...d, values: [d.minTemp, d.maxTemp] };
}),
meta: {
date: { sync: true },
minTemp: { min: 0, max: 30 },
maxTemp: { min: 0, max: 30 },
values: { min: 0, max: 30 },
},
axes: {
date: {},
minTemp: false,
maxTemp: false,
values: {
position: 'left',
},
},
interactions: [{ type: 'active-region' }],
geometries: [
{
type: 'interval',
xField: 'date',
yField: 'values',
mapping: {
size: 4,
style: { fill: '#EBEDF0' },
},
},
{
type: 'point',
xField: 'date',
yField: 'minTemp',
colorField: 'maxTemp',
mapping: {
style: { r: 5 },
shape: 'circle',
color: ['#6ab7da', '#806bd9', '#da6bcc'],
},
},
{
type: 'point',
xField: 'date',
yField: 'maxTemp',
colorField: 'maxTemp',
mapping: {
size: 5,
shape: 'circle',
color: ['#6ab7da', '#806bd9', '#da6bcc'],
},
},
],
},
],
})