精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

動態刻度可視化組件實現

大數據 數據可視化
之前有個網友問我了一個很有價值的問題,筆者思考了一下決定自己實現一個動態刻度可視化組件的方案, 來解決這一類的需求.

前言

之前有個網友問我了一個很有價值的問題, 有關實現數據可視化的問題, 但是這個可視化問題不是一般的柱狀圖, 折現圖之類的,而是不規則刻度的數據可視化.所以筆者思考了一下決定自己實現一個動態刻度可視化組件的方案, 來解決這一類的需求.

正文

最初的需求是這樣的:

我們只需要輸入文字, 數值比例, 就能生成如上圖所示的刻度圖.但是作為一名有追求的程序員, 需要對問題抽象化, 形成通用的解決方案,所以我們開始重組需求:

由上圖我們可以拆解為一下幾個需求點:

  • 支持數值自定義
  • 數值單位自定義
  • 支持刻度組件寬度自定義
  • 支持刻度線數量自定義
  • 支持刻度變化幅度自定義
  • 傳入已有進度比例,即激活區范圍
  • 支持刻度樣式自定義
  • 支持數值樣式自定義
  • 支持自定義說明文本以及說明文本自定義

以上就是筆者挖掘的通用需求,當然有其他需求也可以漸進的增加.

確認了以上需求之后,我們開始選擇技術選型, 筆者之前常用的技術棧是vue和react,所以接下來我們初步確認該組件采用如下技術方案:

  • react + typescript + umi-library

如果大家擅長使用vue, 也可以, 筆者之前也寫過如何搭建vue的組件庫相關的文章,感興趣可以學習了解一下, 其本質思想是一致的.

接下來我們開始實現動態刻度可視化組件. 如果對umi不熟悉的,可以參考筆者之前寫的文章從0到1教你搭建前端團隊的組件系統(高級進階必備).

1. 定義基本屬性類型

由以上需求分析我們可以定義如下的屬性類型:

  1. export interface TickerProps { 
  2.   width: number; 
  3.   maxHeight: number; 
  4.   percent: number; 
  5.   text: string; 
  6.   value: number; 
  7.   showValue: boolean; 
  8.   unit: string; 
  9.   lineNum: number; 
  10.   defaultColor: string; 
  11.   activeColor: string; 
  12.   textStyle: object; 
  13.   valueStyle: object; 

2. 組件整體結構

  1. const Ticker: React.FC<TickerProps> = function(props:TickerProps) { 
  2.   const { 
  3.     width = 100, 
  4.     maxHeight = 10, 
  5.     percent = 50, 
  6.     value, 
  7.     text = '瞬時能見度'
  8.     showValue = true
  9.     unit = 'M'
  10.     lineNum = 12, 
  11.     defaultColor = '#06c'
  12.     activeColor = 'red'
  13.     valueStyle, 
  14.     textStyle 
  15.   } = props 
  16.   return ( 
  17.     <div className="ticker"
  18.       { 
  19.         showValue && 
  20.         <div className="value" style={valueStyle}> 
  21.           { value || 0 } <span className="unit">{ unit }</span> 
  22.         </div> 
  23.       } 
  24.       <div className="tickerGraph"
  25.         <div className="tickerLine"
  26.            
  27.         </div> 
  28.         <div className="tickerBar"></div> 
  29.       </div> 
  30.       { 
  31.         !!text && <div className="text">{ text }</div> 
  32.       } 
  33.     </div> 
  34.   ); 
  35. }; 
  36.  
  37. export default Ticker; 

3. 視圖搭建

有關刻度可視化我們完全采用dom實現, 所以這里筆者具體分析一下如何實現刻度視圖:

上圖的思路就是用一個個dom來組裝成隨機刻度圖形,所以我們只要利用css實現這個形狀, 也就成功了一半.至于激活狀態,我們會根據傳入的數據量來決定激活范圍,接下來會介紹如何渲染激活的刻度,也就是上圖的紅色區域.

4.特殊功能實現

因為該組件很多功能在搭建結構之后已經實現了, 這里我們唯一關注的就是css和js長度計算的問題, css實現方案有很多, 這里就不具體介紹了, 筆者這里重點介紹一下如何實現指定范圍的隨機高度:

  1. // 生成指定范圍的隨機高度 
  2. const random = (min:number, max:number):number => { 
  3.   return min + Math.random() * (max - min

動態刻度條的隨機高度我們就是利用以上函數實現的, 刻度條內部實現如下:

  1. <div className="tickerLine" style={{borderBottomColor: defaultColor}}> 
  2.   { 
  3.     new Array(lineNum).fill(0).map((item:number, i: number) => { 
  4.       let isActive = (i + 1) <= Math.floor(lineNum * percent / 100) 
  5.       return <span 
  6.                className="tick" 
  7.                style={{ 
  8.                  height: random(3, maxHeight) + 'px'left: (gap + 2) * i + 'px'
  9.                  backgroundColor: isActive ? activeColor : defaultColor 
  10.                 }}> 
  11.              </span> 
  12.     }) 
  13.   } 
  14. </div> 

gap為刻度之間的間距, 由于計算刻度的位置需要一點幾何知識, 公式如下:

  1. W = Lw * lineNum + gap * ( lineNum - 1) 

其中W表示刻度總寬度, Lw為刻度線寬度, lineNum為刻度線數量.

還有一個注意點就是激活態, 筆者使用如下函數來判斷刻度是否具有激活狀態:

  1. let isActive = (i + 1) <= Math.floor(lineNum * percent / 100) 

這塊也非常好理解, 也就是我們傳入的比率乘以線的總數量,即可求出哪些刻度線是需要激活的.

以上細節實現完成之后,我們就可以來實現有點意思的刻度可視化方案啦, 如下展示的demo:

1.可見度測量

2.正態分布模型

3.標尺

4.光柵

5.自定義文本樣式

本文轉載自微信公眾號「趣談前端」

【編輯推薦】

 

責任編輯:姜華 來源: 趣談前端
相關推薦

2017-10-14 13:54:26

數據可視化數據信息可視化

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2014-05-28 15:23:55

Rave

2010-08-12 13:52:38

Flex組件

2010-07-30 14:00:41

Flex組件

2021-10-28 08:42:31

Dooring表單設計器數據可視化

2022-08-26 09:15:58

Python可視化plotly

2009-04-21 14:26:41

可視化監控IT管理摩卡

2014-12-31 16:48:43

Touch touchevent多點觸摸

2021-02-01 22:01:57

Coco工具macOS

2015-08-20 10:06:36

可視化

2017-03-28 14:57:23

kylinsuperset可視化

2019-08-06 10:35:25

Python時間序列可視化

2022-09-29 11:16:21

Python數據可視化

2022-05-16 09:34:17

Python可視化圖表

2021-07-27 08:29:33

可視化組件商店H5-Dooring

2021-11-19 08:30:39

H5-Dooring 可視化組件商店

2020-12-29 08:04:16

可視化地圖組件日歷組件

2018-03-27 22:40:59

深度學習

2019-03-05 09:20:47

Vim可視化模式命令
點贊
收藏

51CTO技術棧公眾號

亚洲国产欧美91| 亚洲mv在线看| 国产成人自拍视频在线| 国产主播性色av福利精品一区| 亚洲激情综合网| 国产私拍一区| 国产乱码在线观看| 自产国语精品视频| 亚洲精品视频免费在线观看| 男人添女人下面免费视频| 亚洲精品白浆| 26uuu国产日韩综合| 国产区亚洲区欧美区| 久久国产精品波多野结衣| 美女久久久久| 日韩欧美的一区| 亚洲黄色a v| 欧美性受ⅹ╳╳╳黑人a性爽| 99国产精品久久| 91久久久久久久久| 亚洲GV成人无码久久精品| 午夜精品视频一区二区三区在线看| 亚洲国产精品系列| 日本一二区免费| 松下纱荣子在线观看| 综合久久久久综合| 日本一区免费| 天堂网2014av| 国产自产2019最新不卡| 国产z一区二区三区| 精品99久久久久成人网站免费 | 青青青视频在线播放| 老牛国内精品亚洲成av人片| 91麻豆精品国产| 波多野结衣家庭教师在线| yellow91字幕网在线| 日本一区二区三区高清不卡| 精品日本一区二区| 亚洲乱码精品久久久久..| 精品中文字幕一区二区| 国产精品av电影| 99精品视频99| 日韩一区二区久久| 久久久久久美女| 午夜爽爽爽男女免费观看| 精品少妇av| 亚洲男子天堂网| 成人精品在线观看视频| 国产精品三p一区二区| 日韩欧美激情一区| 性生活在线视频| 国产情侣一区二区三区| 欧美影视一区二区三区| av丝袜天堂网| 成人mm视频在线观看| 日韩欧美亚洲综合| 久久久久狠狠高潮亚洲精品| 日本不卡1234视频| 精品露脸国产偷人在视频| 妺妺窝人体色777777| 国产羞羞视频在线播放| 亚洲一二三四区不卡| 免费一级淫片aaa片毛片a级| 在线视频中文字幕第一页| ...av二区三区久久精品| 日韩精品久久久毛片一区二区| 你懂的在线看| 欧美国产精品专区| 一区二区三区四区欧美日韩| 欧美私人网站| 亚洲精品国产a久久久久久| 97精品国产97久久久久久粉红| 国产精品久久久久久福利| 中文字幕字幕中文在线中不卡视频| 在线免费一区| 成人在线视频亚洲| 一区二区三区四区不卡视频 | 免费看的黄色网| 波多野结衣在线观看一区二区| 色偷偷9999www| 中文字幕av播放| 亚洲成人原创| 国产福利精品在线| 国产一区二区视频免费观看| 国产高清在线精品| 久久国产精品精品国产色婷婷 | 日韩午夜在线视频| 中文字幕在线观看成人| 日韩视频三区| 国产精品极品美女在线观看免费| 国产精品高潮呻吟AV无码| 顶级嫩模精品视频在线看| 免费国产一区| 麻豆av免费在线观看| 一区二区三区国产| 少妇人妻互换不带套| 四虎视频在线精品免费网址| 精品日韩一区二区| b站大片免费直播| 亚洲激情久久| 日本精品视频网站| 国产a级免费视频| 2021中文字幕一区亚洲| 成年人黄色在线观看| 三级在线观看视频| 7777女厕盗摄久久久| 欧美一区二区三区成人精品| 91精品国产自产拍在线观看蜜| 久久久在线视频| 中文字幕+乱码+中文字幕明步| 国产成人午夜片在线观看高清观看| 久中文字幕一区| 伊人春色在线观看| 欧美午夜视频网站| 亚洲の无码国产の无码步美| 99精品在线观看| 国产97免费视| 免费国产黄色片| 亚洲欧美日韩综合aⅴ视频| 无码人妻丰满熟妇区五十路百度| 日本精品在线播放| 最近中文字幕mv在线一区二区三区四区| 国产亚洲欧美久久久久| 热久久一区二区| 麻豆传媒一区二区| 欧美极品少妇videossex| 欧美日韩成人综合| 国产精品无码永久免费不卡| 欧美午夜不卡| 亚洲专区中文字幕| 欧美日韩在线资源| 欧美系列一区二区| 白白色免费视频| 一区二区三区福利| 国产一区福利视频| 男女在线观看视频| 日韩欧美一卡二卡| 97在线观看视频免费| 日本视频免费一区| 茄子视频成人在线观看 | 精品电影在线| 精品国产乱码久久久久久虫虫漫画 | 免费久久99精品国产自| 97超碰免费在线| 精品精品国产高清a毛片牛牛 | 久久精品国内一区二区三区水蜜桃| 日韩美女在线观看一区| 欧洲亚洲在线| 色综合中文字幕国产| 黄瓜视频污在线观看| 亚洲欧美高清| 欧美精品与人动性物交免费看| 男人久久天堂| 亚洲女人天堂成人av在线| 精品国产乱码一区二区| 91亚洲国产成人精品一区二三| 欧美激情亚洲天堂| 风间由美性色一区二区三区四区| 欧美激情视频在线| 蜜桃av噜噜一区二区三区麻豆 | 免费观看亚洲视频| 一本色道69色精品综合久久| 欧美激情视频在线| 五月天婷婷激情网| 日韩欧美成人网| 成人网站免费观看| 亚欧成人精品| 亚洲精品在线免费| 国产成人视屏| 久久久久久午夜| 天堂a中文在线| 色婷婷久久一区二区三区麻豆| 成人黄色免费网址| 精品亚洲成a人| 中国老女人av| 成人知道污网站| 日韩免费不卡av| 亚乱亚乱亚洲乱妇| 日韩欧美的一区| 青草视频在线观看免费| 欧美激情一二三区| 性久久久久久久久久久久久久| 国内久久精品| 欧美午夜免费| 国产精品成人3p一区二区三区| 欧美国产视频日韩| 青青草在线视频免费观看| 欧美日韩一卡二卡| 久草福利资源在线观看| 久久免费看少妇高潮| 五月婷婷之婷婷| 在线看片日韩| 亚洲欧美日韩不卡一区二区三区| 日韩欧美中文字幕一区二区三区| 97色在线视频| 日本电影在线观看网站| 欧美精品一区二区在线观看| 手机av免费观看| 亚洲欧美日韩国产中文在线| 欧美肉大捧一进一出免费视频| 日本成人在线视频网站| 精品国偷自产一区二区三区| 国产精品美女久久久久久不卡| 成人久久久久爱| 亚洲一级少妇| 欧美裸体男粗大视频在线观看| 毛片在线播放网站| 日韩视频在线你懂得| 四虎成人在线观看| 一区二区国产视频| 日韩av片在线免费观看| 99精品热视频| 国产裸体视频网站| 喷白浆一区二区| 又粗又黑又大的吊av| 欧美1区免费| 亚洲午夜精品久久| 网友自拍区视频精品| 99在线热播| 四虎成人精品一区二区免费网站| 91成人福利在线| 色帝国亚洲欧美在线| 社区色欧美激情 | 欧洲亚洲在线| 亚洲男人第一网站| 国产91麻豆视频| 91精品国产综合久久久蜜臀图片| 欧美一区二区三区网站| 午夜精品一区二区三区免费视频 | 欧美黄色一区二区| 色999五月色| 欧美禁忌电影| 欧美另类高清视频在线| 久久精品亚洲成在人线av网址| 2022国产精品| 成人在线视频区| 国产在线观看一区二区三区| 成人自拍视频网| 国产精品成久久久久三级| 一区二区三区伦理| 欧美精品在线第一页| 三区四区电影在线观看| 在线播放国产一区二区三区| 精品av中文字幕在线毛片| 日韩精品亚洲精品| 天堂网www中文在线| 精品性高朝久久久久久久| 五月婷婷六月丁香| 亚洲福利小视频| 日日夜夜精品免费| 亚洲国产婷婷香蕉久久久久久 | 中文字幕国产精品久久| 福利视频在线播放| 中文字幕亚洲天堂| 男人天堂久久久| 久久躁狠狠躁夜夜爽| 99在线播放| 国产+成+人+亚洲欧洲| sm捆绑调教国产免费网站在线观看| 欧美黄色片免费观看| 大香伊人中文字幕精品| 91精品国产乱码久久久久久久久 | 中文字幕一区二区三区在线视频| 影音先锋成人资源网站| 欧美日本精品| 久久视频这里有精品| 羞羞答答国产精品www一本| 能看的毛片网站| 久久国产生活片100| 91亚洲一区二区| 粉嫩aⅴ一区二区三区四区五区| 国产草草浮力影院| 久久一区二区视频| 性爱在线免费视频| 亚洲六月丁香色婷婷综合久久 | 欧美熟妇激情一区二区三区| 欧美国产一区二区在线观看| 日韩在线视频网址| 亚洲成av人片| 免费视频网站在线观看入口| 欧美高清视频在线高清观看mv色露露十八| 国产毛片一区二区三区va在线| 精品免费国产一区二区三区四区| 亚洲欧洲国产综合| 在线视频亚洲欧美| 污污的网站在线看| 欧美在线视频播放| 国产精品2区| 欧美精品一区二区三区四区五区 | 久久视频在线视频| 国产精品25p| 国产综合色香蕉精品| 国产女人18毛片水真多18精品| 日韩美女一区| 欧美午夜国产| 在线观看av网页| 白白色亚洲国产精品| 天美传媒免费在线观看| 午夜精品成人在线视频| 在线观看中文字幕网站| 亚洲成人性视频| 浪潮av一区| 欧美亚洲国产视频| 久久久久久爱| 少妇特黄a一区二区三区| 精久久久久久| 手机av在线网| 国产亚洲成av人在线观看导航| 久久国产精品波多野结衣av| 欧美网站大全在线观看| 欧美一级淫片免费视频魅影视频| 中文字幕不卡在线视频极品| 俺来也官网欧美久久精品| 91精品久久久久久久久久另类| 欧美18xxxx| 91精品国产毛片武则天| 日韩va亚洲va欧美va久久| a天堂视频在线观看| 亚洲欧洲中文日韩久久av乱码| 一级做a爰片久久毛片| 精品国产一区二区三区不卡 | 亚洲av综合色区无码一二三区 | 可以看av的网站久久看| 国产香蕉精品视频| 综合色天天鬼久久鬼色| 一区二区乱子伦在线播放| 日韩精品在线视频美女| 好看的中文字幕在线播放| 91精品在线看| 婷婷综合五月| 在线看免费毛片| 国产精品天干天干在线综合| 亚洲婷婷综合网| 亚洲美女精品成人在线视频| 国产精品高颜值在线观看| yellow视频在线观看一区二区| 久久精品久久久| 欧美成人乱码一二三四区免费| 国产欧美一区在线| 亚洲成人av网址| 国产亚洲aⅴaaaaaa毛片| 日韩大片免费观看| 久久综合一区二区三区| 国产一区二区三区成人欧美日韩在线观看 | 桃色av一区二区| 精品在线视频一区二区| 99精品免费| 国产ts丝袜人妖系列视频| 欧美日韩亚洲网| 免费在线稳定资源站| 日韩av手机在线| 国产一区毛片| 国产又大又黄又粗的视频| 亚洲国产精品99久久久久久久久| 精品一区二三区| 色诱女教师一区二区三区| 日韩一级特黄| 杨幂一区欧美专区| 激情文学综合丁香| 草视频在线观看| 欧美变态口味重另类| 乱人伦视频在线| 日本精品一区二区三区视频| 日韩精品成人一区二区三区 | 婷婷亚洲五月色综合| 婷婷中文字幕在线观看| 亚洲精品写真福利| 日本黄色大片视频| 日本欧美在线视频| 日韩欧美综合| 九色91porny| 五月婷婷久久丁香| 国产免费av高清在线| 国产精品一香蕉国产线看观看| 永久亚洲成a人片777777| 日本50路肥熟bbw| 欧美午夜xxx| 丝袜美腿美女被狂躁在线观看 | 亚洲免费专区| 亚洲 欧美 日韩系列| 亚洲精品日韩一| 色播色播色播色播色播在线| 国产精品自产拍在线观| 欧美精品九九| av中文字幕免费观看| 3d成人动漫网站| 黄视频网站在线观看| 午夜精品一区二区三区四区| 国产成人在线看| 国产99久久久久久免费看| 欧美成人精品影院| 亚洲a级精品| 在线观看视频你懂得| 色哟哟日韩精品| 中文字幕有码在线观看| 欧美精品尤物在线| 国产不卡视频在线播放| 性色av一区二区三区四区| 国内精品在线一区| 色小子综合网|