<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
專案是金融專案,就像支付寶基金的走勢圖一樣。但圖表庫使用的是 echart 而不是 antv 的 f2,要問為什麼不直接用 f2 ?問就是因為專案歷史包袱。
瞭解過 echart 的都知道,官方提供了十星輔助線,只要設定 axisPointer 的 type 為cross 即可實現類似股票走勢圖的十星線,縱軸吸附最近的點,橫軸跟隨滑鼠或手勢的觸點位置,如下圖
功能沒問題,但是若作為基金產品,老闆要求要對標支付寶,要達到如下圖的效果
但既然對標阿里,為什麼不用 antv ?我也問過。但從風險和成本的角度看,反正最終是老闆不讓。
既然不能切 antv,上面的 cross 又不能滿足老闆的要求,那麼就要老老實實研究 echart 怎麼實現了。
方案的過程就不詳細說了,反正最後靈光一現,考慮到可以用 type 為 line 的 axisPointer 和 markline 來達到了老闆的需求。
1、開啟 tooltip,並將 tooltip 的 trigger 設定為 axis。
2、xAxis 中設定 axisPointer,這裡設定 snap 為 true,保證縱向輔助線吸附。
3、series 中設定 markline,預設的 markline 會自帶起點和箭頭,為了做十星,這裡需要將起點和箭頭通過將 symbol 設定為 none 來取消,預設 markline 的顯示會有動畫,而十星沒有,所以還要將 animation 設定為 false 來禁止 markline 的緩動展示動畫
4、完成以上步驟將會得到一個跟隨手勢的縱線和固定位置的橫線(markline),若要達到完美的十星,這裡需要設定一個能跟隨手勢的橫線,那麼這裡需要通過獲取縱線吸附後的點來重設 markline 的位置,我這裡在 tooltip 的 formatter 中進行處理,因為這裡能拿到我要的點(目前沒找到其他好的辦法,有知道的也可以提供下想法)
5、這樣看起來就基本完成了,但是考慮到行動端,手勢離開圖表座標系時,axisPointer 會自動消失,但是按照我們的實現,markline 不會跟隨消失,這時候我們就需要通過監聽點選的位置來再次控制 markline 的展示了
大致的設定如下
// 5 這裡設定非同步是因為 demo 的程式碼是部分程式碼,執行的時候可能myChart 還沒渲染完成,真實處理的時候若 chart 已經渲染完成的話無需非同步處理 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 }; // 設定監聽 myChart._zr.on('mouseup', (e) => { var { offsetX, offsetY } = e; // // 點選圖表之外時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) { // 這裡需要非同步處理以下,否則無法設定成功 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: '模擬資料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 }, } ] }
以上,類支付寶的走勢圖十星就完成了,年度 kpi 達成 (•̀ᴗ• )?
有需要的可以參考已實現的 demo,也不知道官方會儲存多久,且看且珍惜。
以上就是echartjs實現cross十星輔助線實現範例詳解的詳細內容,更多關於echartjs cross十星輔助線的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45