option = {
xAxis: {
type: 'value',
min: -90, // 强制固定x轴范围
max: -30,
axisLabel: {
// 直接定义需要显示的标签数组(按需调整)
formatter: function(value) {
const labels = [
-90, -85, -80, -75, -70,
-65, -60, -55, -50, -45,
-40, -35, -30
];
// 精确匹配标签(允许浮点误差)
const match = labels.find(label => Math.abs(value - label) < 0.1);
return match !== undefined ? match : '';
}
},
// 隐藏非指定标签的刻度线(可选)
axisTick: {
show: false // 隐藏所有刻度线,或通过更复杂的逻辑控制
},
splitLine: {
show: false // 隐藏网格线(可选)
}
},
yAxis: {
type: 'value',
min: 0, // 根据你的需求调整
max: 100,
axisLabel: {
// y轴标签配置(参考x轴逻辑)
formatter: function(value) {
const labels = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
const match = labels.find(label => Math.abs(value - label) < 0.1);
return match !== undefined ? match : '';
}
}
},
series: [{
type: 'scatter',
data: [[-85, 20], [-70, 50], [-60, 80]] // 示例数据
}]
};
const data = [
[
[-50, 77, 17096869, 'Australia', 1990],
[-80, 77.4, 27662440, 'Canada', 1990],
[1516, 68, 1154605773, 'China', 1990],
[13670, 74.7, 10582082, 'Cuba', 1990],
[28599, 75, 4986705, 'Finland', 1990],
[29476, 77.1, 56943299, 'France', 1990],
[31476, 75.4, 78958237, 'Germany', 1990],
[28666, 78.1, 254830, 'Iceland', 1990],
[1777, 57.7, 870601776, 'India', 1990],
[29550, 79.1, 122249285, 'Japan', 1990],
[2076, 67.9, 20194354, 'North Korea', 1990],
[12087, 72, 42972254, 'South Korea', 1990],
[24021, 75.4, 3397534, 'New Zealand', 1990],
[43296, 76.8, 4240375, 'Norway', 1990],
[10088, 70.8, 38195258, 'Poland', 1990],
[19349, 69.6, 147568552, 'Russia', 1990],
[10670, 67.3, 53994605, 'Turkey', 1990],
[26424, 75.7, 57110117, 'United Kingdom', 1990],
[37062, 75.4, 252847810, 'United States', 1990]
],
[
[44056, 81.8, 23968973, 'Australia', 2015],
[43294, 81.7, 35939927, 'Canada', 2015],
[13334, 76.9, 1376048943, 'China', 2015],
[21291, 78.5, 11389562, 'Cuba', 2015],
[38923, 80.8, 5503457, 'Finland', 2015],
[37599, 81.9, 64395345, 'France', 2015],
[44053, 81.1, 80688545, 'Germany', 2015],
[42182, 82.8, 329425, 'Iceland', 2015],
[5903, 66.8, 1311050527, 'India', 2015],
[36162, 83.5, 126573481, 'Japan', 2015],
[1390, 71.4, 25155317, 'North Korea', 2015],
[34644, 80.7, 50293439, 'South Korea', 2015],
[34186, 80.6, 4528526, 'New Zealand', 2015],
[64304, 81.6, 5210967, 'Norway', 2015],
[24787, 77.3, 38611794, 'Poland', 2015],
[23038, 73.13, 143456918, 'Russia', 2015],
[19360, 76.5, 78665830, 'Turkey', 2015],
[38225, 81.4, 64715810, 'United Kingdom', 2015],
[53354, 79.1, 321773631, 'United States', 2015]
]
];
option = {
tooltip: {
trigger: 'item',
formatter: function(params) {
if (
params.componentType === 'markLine' &&
params.data.value === -80
) {
return '<div style="color: green; background: blue; padding: 5px;">hello js</div>';
}
return '';
},
backgroundColor: 'transparent',
borderColor: 'transparent',
textStyle: {
color: 'green'
}
},
backgroundColor: new echarts.graphic.RadialGradient(0.3, 0.3, 0.8, [
{
offset: 0,
color: '#f7f8fa'
},
{
offset: 1,
color: '#cdd0d5'
}
]),
title: {
text: 'Life Expectancy and GDP by Country',
left: '5%',
top: '3%'
},
legend: {
right: '10%',
top: '3%',
data: ['1990', '2015']
},
grid: {
left: '8%',
top: '10%'
},
xAxis: {
type: 'value',
min: -90,
max: -30,
axisLabel: {
formatter: function(value) {
const labels = [
-90, -85, -80, -75, -70,
-65, -60, -55, -50, -45,
-40, -35, -30
];
const match = labels.find(label => Math.abs(value - label) < 0.1);
if (match === -80) {
return `{smile|}${match}`;
}
return match !== undefined ? match : '';
},
rich: {
smile: {
backgroundColor: {
image: 'https://tse1-mm.cn.bing.net/th/id/OIP-C.BwP3RDA0vyTZ7Q7G5qik3gHaGS?rs=1&pid=ImgDetMain',
},
width: 16,
height: 16,
align: 'right',
padding: [0, 4, 0, 0]
}
}
},
axisTick: {
show: false
},
splitLine: {
show: false
}
},
yAxis: {
splitLine: {
lineStyle: {
type: 'dashed'
}
},
scale: true
},
series: [
{
name: '1990',
data: data[0],
type: 'scatter',
symbolSize: function (data) {
return Math.sqrt(data[2]) / 5e2;
},
emphasis: {
focus: 'series',
label: {
show: true,
formatter: function (param) {
return param.data[3];
},
position: 'top'
}
},
itemStyle: {
shadowBlur: 10,
shadowColor: 'rgba(120, 36, 50, 0.5)',
shadowOffsetY: 5,
color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [
{
offset: 0,
color: 'rgb(251, 118, 123)'
},
{
offset: 1,
color: 'rgb(204, 46, 72)'
}
])
}
},
{
name: '2015',
data: data[1],
type: 'scatter',
symbolSize: function (data) {
return Math.sqrt(data[2]) / 5e2;
},
markLine: {
symbol: 'none',
lineStyle: {
type: 'dashed',
color: 'red',
width:1
},
data: [{
xAxis: -80,
value: -80,
label: {
show: false,
}
}],
emphasis:{
lineStyle:{
color:'black',
width:1
},
label:{
formatter:function(){
return 123
},
color:'pink',
backgroundColor:'#636363',
padding:10
}
}
},
emphasis: {
focus: 'series',
label: {
show: true,
formatter: function (param) {
return param.data[3];
},
position: 'top'
}
},
itemStyle: {
shadowBlur: 10,
shadowColor: 'rgba(25, 100, 150, 0.5)',
shadowOffsetY: 5,
color: new echarts.graphic.RadialGradient(0.4, 0.3, 1, [
{
offset: 0,
color: 'rgb(129, 227, 238)'
},
{
offset: 1,
color: 'rgb(25, 183, 207)'
}
])
}
}
]
};