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>
|