echartOption = ({
backgroundColor: '#EDF2F7',
title: {
text: `${xMetric.split(" [")[0]} &\n${yMetric} by Country`,
padding: [0, 5]
},
legend: {
top: 35,
data: Object.keys(echartsSeries)
},
xAxis: {
nameLocation: 'center',
name: xMetric.split(' [')[0],
nameTextStyle: {
lineHeight: 25,
}
},
yAxis: {
nameLocation: 'center',
nameGap: 20,
name: yMetric
},
tooltip: {
showDelay: 0,
formatter: params => params.data[3] ? `<b>${params.data[3]}</b>
<div>Population: ${params.data[2]}</div>
<div>${xMetric.split(' [')[0]}: ${params.data[0]}</div>
<div>${yMetric}: ${params.data[1]}</div>
` : ''
},
toolbox: {
show: true,
feature: {
dataZoom: {
title: {
zoom: 'area zooming',
back: 'restore area zooming'
}
},
saveAsImage: { title: 'save as image' }
}
},
dataZoom: [
{
id: 'dataZoomY',
type: 'slider',
yAxisIndex: [0],
showDataShadow: false,
left: '92%',
width: '15px'
},
{
id: 'dataZoomX',
type: 'slider',
xAxisIndex: [0],
showDataShadow: false,
height: '15px',
top: '97%'
}
],
series: Object.keys(echartsSeries).map(continent => ({
name: continent,
data: echartsSeries[continent],
markLine: {
silent: true,
data: scatterStyling.includes('change') ? echartsMarklines[continent] : []
},
type: 'scatter',
cursor: 'default',
symbolSize: data => scatterStyling.includes('size') ? Math.sqrt(data[2]) / 5e2 : 5,
hoverAnimation: false,
itemStyle: {
color: scatterStyling.includes('colour') ? undefined : '#000000'
},
label: {
show: true,
position: 'right',
formatter: param => param.data[3]
}
}))
});