最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

echartjs實(shí)現(xiàn)cross十星輔助線實(shí)現(xiàn)示例詳解

 更新時(shí)間:2022年12月11日 11:01:24   作者:九酒  
這篇文章主要為大家介紹了echartjs實(shí)現(xiàn)cross十星輔助線實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

項(xiàng)目是金融項(xiàng)目,就像支付寶基金的走勢(shì)圖一樣。但圖表庫使用的是 echart 而不是 antv 的 f2,要問為什么不直接用 f2 ?問就是因?yàn)轫?xiàng)目歷史包袱。

背景

了解過 echart 的都知道,官方提供了十星輔助線,只要設(shè)置 axisPointer 的 type 為cross 即可實(shí)現(xiàn)類似股票走勢(shì)圖的十星線,縱軸吸附最近的點(diǎn),橫軸跟隨鼠標(biāo)或手勢(shì)的觸點(diǎn)位置,如下圖

功能沒問題,但是若作為基金產(chǎn)品,老板要求要對(duì)標(biāo)支付寶,要達(dá)到如下圖的效果

但既然對(duì)標(biāo)阿里,為什么不用 antv ?我也問過。但從風(fēng)險(xiǎn)和成本的角度看,反正最終是老板不讓。

既然不能切 antv,上面的 cross 又不能滿足老板的要求,那么就要老老實(shí)實(shí)研究 echart 怎么實(shí)現(xiàn)了。

方案的過程就不詳細(xì)說了,反正最后靈光一現(xiàn),考慮到可以用 type 為 line 的 axisPointer 和 markline 來達(dá)到了老板的需求。

具體實(shí)現(xiàn)

1、開啟 tooltip,并將 tooltip 的 trigger 設(shè)置為 axis。

2、xAxis 中設(shè)置 axisPointer,這里設(shè)置 snap 為 true,保證縱向輔助線吸附。

3、series 中設(shè)置 markline,默認(rèn)的 markline 會(huì)自帶起點(diǎn)和箭頭,為了做十星,這里需要將起點(diǎn)和箭頭通過將 symbol 設(shè)置為 none 來取消,默認(rèn) markline 的顯示會(huì)有動(dòng)畫,而十星沒有,所以還要將 animation 設(shè)置為 false 來禁止 markline 的緩動(dòng)展示動(dòng)畫

4、完成以上步驟將會(huì)得到一個(gè)跟隨手勢(shì)的縱線和固定位置的橫線(markline),若要達(dá)到完美的十星,這里需要配置一個(gè)能跟隨手勢(shì)的橫線,那么這里需要通過獲取縱線吸附后的點(diǎn)來重設(shè) markline 的位置,我這里在 tooltip 的 formatter 中進(jìn)行處理,因?yàn)檫@里能拿到我要的點(diǎn)(目前沒找到其他好的辦法,有知道的也可以提供下想法)

5、這樣看起來就基本完成了,但是考慮到移動(dòng)端,手勢(shì)離開圖表坐標(biāo)系時(shí),axisPointer 會(huì)自動(dòng)消失,但是按照我們的實(shí)現(xiàn),markline 不會(huì)跟隨消失,這時(shí)候我們就需要通過監(jiān)聽點(diǎn)擊的位置來再次控制 markline 的展示了

大致的配置如下

// 5 這里設(shè)置異步是因?yàn)?demo 的代碼是部分代碼,執(zhí)行的時(shí)候可能myChart 還沒渲染完成,真實(shí)處理的時(shí)候若 chart 已經(jīng)渲染完成的話無需異步處理
setTimeout(()=>{
  var _componentsViews = myChart._componentsViews;
  var  view = _componentsViews.find(item => item.type === 'grid') || {};
  debugger
  var  rect = view.__model.coordinateSystem._rect;
  var  rectObj = {
    x: rect.x,
    x1: rect.x + rect.width,
    y: rect.y,
    y1: rect.y + rect.height
  };
  // 設(shè)置監(jiān)聽
  myChart._zr.on('mouseup', (e) => {
    var { offsetX, offsetY } = e;
    // // 點(diǎn)擊圖表之外時(shí)markline消失
    if (offsetX < rectObj.x || offsetX > rectObj.x1 || offsetY < rectObj.y || offsetY > rectObj.y1) {
      chart.setOption({
        series: [{
          markLine: {
            data: [],
            label: {
              show: false
            }
          }
        }]
      });
    }
  });
}, 1000)
...
option = {
    tooltip: {
        // 1
        trigger: "axis",
        // 4
        formatter(arg) {
          // 這里需要異步處理以下,否則無法設(shè)置成功
          setTimeout(function() {
            myChart.setOption({
                series: [{
                  markLine: {
                    data: [{
                      yAxis: arg[0].value[1],
                      label: {
                        show: true
                      }
                    }]
                  }
                }]
            })
          }, 0);
        }
        ...
    },
    xAxis: {
        // 2
        axisPointer: {
          snap: true,
          label: {
            show: true,
            backgroundColor: "#0000ff",
            color: '#fff',
            ...
          },
          lineStyle: {
            color: '#0000ff'
          },
          ...
        },
     },
     yAxis: {
         ...
     },
     series: [
        {
          name: '模擬數(shù)據(jù)2',
          type: 'line',
          ...
          // 3
          markLine: {
            symbol: 'none',
            silent: true,
            data: [
              {
                yAxis: 0,
                label: {
                  show:false
                }
              }
            ],
            label: {
              show: true,
              position: 'start',
              backgroundColor: '#0000ff',
              color: '#ffffff',
              padding: 2
            },
            lineStyle: {
              color: '#0000ff'
            },
            animation: false
          },
        }
    ]
}

以上,類支付寶的走勢(shì)圖十星就完成了,年度 kpi 達(dá)成 (•??• )?

有需要的可以參考已實(shí)現(xiàn)的 demo,也不知道官方會(huì)保存多久,且看且珍惜。

以上就是echartjs實(shí)現(xiàn)cross十星輔助線實(shí)現(xiàn)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于echartjs cross十星輔助線的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 快速實(shí)現(xiàn)JS圖片懶加載(可視區(qū)域加載)示例代碼

    快速實(shí)現(xiàn)JS圖片懶加載(可視區(qū)域加載)示例代碼

    目前很多網(wǎng)站,在圖片加載時(shí)均采用了一種名為懶加載的方式,具體表現(xiàn)為,當(dāng)頁面被請(qǐng)求時(shí),只加載可視區(qū)域的圖片,其它部分的圖片則不加載,只有這些圖片出現(xiàn)在可視區(qū)域時(shí)才會(huì)動(dòng)態(tài)加載這些圖片,下面本文就介紹了JS圖片懶加載(可視區(qū)域加載)的實(shí)現(xiàn)方法,一起來看看吧。
    2017-01-01
  • js正則表達(dá)式驗(yàn)證郵件地址

    js正則表達(dá)式驗(yàn)證郵件地址

    這篇文章主要介紹了js正則表達(dá)式驗(yàn)證郵件地址,利用javaScript語言實(shí)現(xiàn)一下電子郵件地址驗(yàn)證程序,使用的是JavaScript語言的正則表達(dá)式庫,感興趣的小伙伴們可以參考一下
    2015-11-11
  • Bootstrap 網(wǎng)站實(shí)例之單頁營(yíng)銷網(wǎng)站

    Bootstrap 網(wǎng)站實(shí)例之單頁營(yíng)銷網(wǎng)站

    這篇文章主要介紹了Bootstrap 網(wǎng)站實(shí)例之單頁營(yíng)銷網(wǎng)站的相關(guān)資料,本文給大家介紹的非常詳細(xì)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • JSON 對(duì)象未定義錯(cuò)誤的解決方法

    JSON 對(duì)象未定義錯(cuò)誤的解決方法

    下面小編就為大家?guī)硪黄狫SON 對(duì)象未定義錯(cuò)誤的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • ES6知識(shí)點(diǎn)整理之模塊化的應(yīng)用詳解

    ES6知識(shí)點(diǎn)整理之模塊化的應(yīng)用詳解

    這篇文章主要介紹了ES6知識(shí)點(diǎn)整理之模塊化的應(yīng)用,結(jié)合實(shí)例形式分析了基于node.js環(huán)境下模擬ES6模塊化配置與使用相關(guān)操作技巧,需要的朋友可以參考下
    2019-04-04
  • uniapp中修改打包路徑的實(shí)現(xiàn)步驟

    uniapp中修改打包路徑的實(shí)現(xiàn)步驟

    本文主要介紹了uniapp中修改打包路徑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • JavaScript提升機(jī)制Hoisting詳解

    JavaScript提升機(jī)制Hoisting詳解

    這篇文章主要介紹了JavaScript提升機(jī)制Hoisting詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • JavaScript逆向案例之如何破解登錄密碼

    JavaScript逆向案例之如何破解登錄密碼

    這篇文章主要介紹了JavaScript逆向案例之如何破解登錄密碼,文章通過12306的登陸方法展開用戶登錄密碼的參數(shù)破解辦法,感興趣的小伙伴可以參考一下
    2022-06-06
  • JavaScript實(shí)現(xiàn)in-place思想的快速排序方法

    JavaScript實(shí)現(xiàn)in-place思想的快速排序方法

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)in-place思想的快速排序方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • 前端Webpack配置之eval-source-map使用方法

    前端Webpack配置之eval-source-map使用方法

    eval-source-map 是 Webpack 中 devtool 選項(xiàng)的一種模式,它提供了一種內(nèi)聯(lián) Source Map 的方式,用于開發(fā)環(huán)境中的源代碼映射,這篇文章主要介紹了前端Webpack配置之eval-source-map使用方法,需要的朋友可以參考下
    2024-12-12

最新評(píng)論

崇信县| 裕民县| 图片| 罗田县| 庄浪县| 犍为县| 高安市| 花莲市| 天祝| 加查县| 丹寨县| 华蓥市| 东莞市| 婺源县| 射阳县| 西城区| 共和县| 北海市| 高淳县| 石渠县| 慈利县| 乐亭县| 凌云县| 和顺县| 罗田县| 张掖市| 明溪县| 吉木萨尔县| 临清市| 巴林左旗| 盐津县| 宁化县| 独山县| 溧水县| 焦作市| 改则县| 信阳市| 西宁市| 石城县| 赤水市| 中西区|