console
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>ECharts</title>
</head>
<body>
<div id="main" style="width: 100%;height:600px;"></div>
<script type="text/javascript">
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom);
var option;
let z = 1230.6
let series_data = []
let x0 = 80
let maxX = 150
let v1 = 2;
let miny = z*0.9
let y0 = 1200
y0 = Math.floor(z*1.2)
var m = getSlope(x0,maxX,y0,miny)
let splitNum = Math.floor((maxX-x0)/(v1+1))
let splitArr = []
for(let i=1;i<=v1;i++){
splitArr.push(x0+splitNum*i)
}
console.log(splitNum,splitArr)
var m2 = getSlope(x0-24-6,x0-24,0,y0)
console.log(m,m2)
for(let i=0;i<=maxX;i++){
if(i>=x0-24-6 &&i<x0-24){
series_data.push([i,calculateYFromX(x0-24-6,i,m2,0)])
}
else if(i>=x0-24 && i<x0){
series_data.push([i,y0])
}
else if(i>=x0){
if(splitArr.includes(i)){
series_data.push([i,null])
}else{
series_data.push([i,calculateYFromX(x0,i,m,y0)])
}
}
}
option = {
tooltip: {
trigger: 'axis'
},
xAxis: {
type: 'value',
},
yAxis: {
type: 'value'
},
series: [
{
z: 2,
name: '',
stack: 'Total1',
showSymbol: false,
lineStyle: {
width: 0
},
data: series_data,
type: 'line',
areaStyle: {
opacity: 1.6,
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{
offset: 0,
color: 'rgb(168, 184, 195)'
},
{
offset: 1,
color: 'rgb(107, 119, 127)'
}
])
}
}
]
};
option && myChart.setOption(option);
option && myChart.setOption(option);
function calculateYFromX(x0,x, m, y0) {
let y = m * (x - x0) + y0;
if(y<0){
y = 0
}
return y.toFixed(2)
}
function getSlope(x0, x1, y0,y1) {
return (y0-y1)/(x0-x1)
}
</script>
</body>
</html>