| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 | <!--	此示例下载自 https://echarts.apache.org/examples/zh/editor.html?c=line-simple&code=PYBwLglsB2AEC8sDeAoWsAeBBDEDOAXMmurGAJ4gCmRA5AMYCGYVA5sAE7m0A0J6AE2aMiAbVoBZGL1i0AKgFcqM2gHUqAlXIAWClQDEOEFQGVmphdFoBdEgF8-6cjnxFUpMpRqyAbowA2SrT2jrB4VEZUhLCi_MQegsJiAIwArAAMPLDQCv7-WQBMBQAshckAHFnJAMypVcUA7IUAbOnWoR4U1HT-ENDKcQ5x7glCYCIxALTJ6bNZmbALCw0LyTNV1W0dpF3etL39vHHoeOQAtgBGwP50YEaM0Kz-ytsn51f-JhAAXt4FmcdYAcqCYKM83ID0PRrpw6ABiVKNdIAYVa6SOCVIAHcIAIwNoiKVIZ5urIhHhtBpgpihpiICwzqDyOD4pjYFcOAIIqpcfiiNVXqQOVyOMiYRx4QBRSXNWXNDFs6H-WGychUPLALHUhJ2QYkWx2ADcQA	⚠ 请注意,该图表不是 Apache ECharts 官方示例,而是由用户代码生成的。请注意鉴别其内容。--><!DOCTYPE html><html lang="zh-CN" style="height: 100%"><head>  <meta charset="utf-8"></head><body style="height: 100%; margin: 0">  <div id="container" style="height: 100%"></div>    <script type="text/javascript" src="https://fastly.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script>  <!-- Uncomment this line if you want to dataTool extension  <script type="text/javascript" src="https://fastly.jsdelivr.net/npm/echarts@5.4.1/dist/extension/dataTool.min.js"></script>  -->  <!-- Uncomment this line if you want to use gl extension  <script type="text/javascript" src="https://fastly.jsdelivr.net/npm/echarts-gl@2/dist/echarts-gl.min.js"></script>  -->  <!-- Uncomment this line if you want to echarts-stat extension  <script type="text/javascript" src="https://fastly.jsdelivr.net/npm/echarts-stat@latest/dist/ecStat.min.js"></script>  -->  <!-- Uncomment this line if you want to use map  <script type="text/javascript" src="https://fastly.jsdelivr.net/npm/echarts@4.9.0/map/js/china.js"></script>  <script type="text/javascript" src="https://fastly.jsdelivr.net/npm/echarts@4.9.0/map/js/world.js"></script>  -->  <!-- Uncomment these two lines if you want to use bmap extension  <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_API_KEY"></script>  <script type="text/javascript" src="https://fastly.jsdelivr.net/npm/echarts@5.4.1/dist/extension/bmap.min.js"></script>  -->  <script type="text/javascript">    var dom = document.getElementById('container');    var myChart = echarts.init(dom, null, {      renderer: 'canvas',      useDirtyRect: false    });    var app = {};    function getXAxis(arrays){      let set = new Set()      for(let array of arrays){        for(let item of array){          set.add(item.createDate)        }      }      let newArray = new Array()      set.forEach(value => {        newArray.push(value);      })      newArray.sort((a, b) => {        return a.localeCompare(b)      })      return newArray;    }    var list1 = [            {value:0.3,createDate:"2023-02-10"},            {value:0.4,createDate:"2023-02-15"},            {value:0.7,createDate:"2023-02-18"},            {value:0.5,createDate:"2023-02-20"},            ]    var list2 = [      {value:0.5,createDate:"2023-02-10"},      {value:0.6,createDate:"2023-02-15"},      {value:0.8,createDate:"2023-02-18"},      {value:0.4,createDate:"2023-02-20"},    ]    var list3 = [      {value:-0.2,createDate:"2023-02-09"},      {value:-0.2,createDate:"2023-02-10"},      {value:-0.2,createDate:"2023-02-11"},      {value:-0.2,createDate:"2023-02-15"},      {value:-0.2,createDate:"2023-02-16"},      {value:-0.2,createDate:"2023-02-17"},      {value:-0.2,createDate:"2023-02-18"},      {value:-0.2,createDate:"2023-02-21"},    ]    var list4 = [      {value:-0.5,createDate:"2023-02-09"},      {value:-0.5,createDate:"2023-02-11"},      {value:-0.5,createDate:"2023-02-12"},      {value:-0.5,createDate:"2023-02-16"},      {value:-0.5,createDate:"2023-02-17"},      {value:-0.5,createDate:"2023-02-18"},      {value:-0.5,createDate:"2023-02-19"},      {value:-0.5,createDate:"2023-02-22"},    ]    let xAxisData = getXAxis([list1,list2,list3,list4]);    function getSeries(arrays){      let series = new Array();      for(let array of arrays){        if(array[0].value < 0){          let points = createPoints();          points.data = fillByCreateDate(xAxisData, array, null)          series.push(points);        }else{          let line = createLine();          line.data = fillByCreateDate(xAxisData, array, "mid")          series.push(line)        }      }      return series;    }    function createPoints(){      return {        data:[],        type: 'line',        symbol: 'triangle',        symbolSize: 20,        lineStyle: {          color: '#5470C600',          width: 4,          type: 'dashed'      },        itemStyle: {          borderWidth: 3,          borderColor: '#EE6666',          color: 'yellow'        }      }    }    function createLine(){      return {        data: [],        type: 'line',        symbol: function(array,obj){          if(!obj.data.mid){            return "emptyCircle";          }else{            return "none"          }        },        itemStyle: {          borderWidth:0,          borderColor: '#EE666600',          borderJoin:"miter",          color: function(obj){            if(!obj.data.mid){              return obj.color;            }else{              return "none"            }          },          borderWidth: function(obj){            console.log(obj)          }        }      }    }    function fillByCreateDate(createDates, datas, filler){      let res = new Array()      let j=0;      for(let i=0;i<createDates.length;i++){        if(!datas[j]){          res.push({value:null})        }else if(createDates[i] == datas[j].createDate){          res.push(datas[j++])        }else{          res.push({value:filler,mid:'mid'});        }      }      //处理中间值      if(filler == "mid"){        insertMid(res)      }      return res;    }    function insertMid(datas){      let before = null;      let n = 0;      for(let i=0;i<datas.length;i++){        if(!before && datas[i].value === "mid"){          datas[i] = {value:null};          continue;        }        if(!before){          before = datas[i].value;          continue;        }        if(datas[i].value === "mid"){          n++;        }else{          if(n > 0){            insertMid2(before, datas[i].value, datas, i , n)            n = 0;          }          before = datas[i].value;        }      }    }    function insertMid2(before, alter, datas, i , n){      let f = (alter - before) / (n + 1);      for(let j = i-n; j < i;j++){        datas[j].value = before + f;        before = datas[j].value;      }    }    let series = getSeries([list1,list2,list3,list4]);console.log(series)var option = {  xAxis: {    type: 'category',    data: xAxisData  },  yAxis: {    type: 'value'  },  series: series};    if (option && typeof option === 'object') {      myChart.setOption(option);    }    window.addEventListener('resize', myChart.resize);  </script></body></html>
 |