溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

d3.js中內(nèi)置函數(shù)有哪些

發(fā)布時(shí)間:2021-08-19 09:41:04 來(lái)源:億速云 閱讀:152 作者:小新 欄目:web開(kāi)發(fā)

小編給大家分享一下d3.js中內(nèi)置函數(shù)有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

selection.classed(name,【value】)

value參數(shù)可選,如果沒(méi)有指定,則返回與name參數(shù)匹配的第一個(gè)非空元素是否綁定了指定的CSS類,true表示綁定,false表示未綁定。如果value指定了的話,就是為selection添加/刪除CSS類。

這點(diǎn)與selection.attr(name,【value】)非常類似,但是相比而言,就冷門(mén)的多,恐怕沒(méi)有多少人不知道selection.attr(name,【value】),但是有很多人真的不知道selection.classed(name,【value】)  。

這個(gè)函數(shù)很實(shí)用,比如鼠標(biāo)進(jìn)入某些點(diǎn),讓這些點(diǎn)高亮以表示強(qiáng)調(diào),但是移出去之后,讓他們回復(fù)原來(lái)的樣式就可以用這個(gè)函數(shù),免去了重新設(shè)置樣式的麻煩,甚至有時(shí)候恢復(fù)原來(lái)樣式的時(shí)候,還需要判斷,就更麻煩了。

transition.filter(selector)

過(guò)濾也有過(guò)渡,這點(diǎn)可能很多人都忽略了,比如設(shè)置動(dòng)畫(huà)結(jié)束時(shí),索引為奇數(shù)的元素旋轉(zhuǎn)30度。甚至可以自己定義規(guī)則,如第5、10、15個(gè)元素改變,其他的不變。

d3.interpolate(a,b)

返回一個(gè)介于a,b之間的默認(rèn)插值器,插值器的類型取決于b的類型。

     1)如果b是顏色類型,那么返回的是interpolateRgb插值器

     2)如果是字符串類型,則返回interpolateString插值器

     3)如果是數(shù)組類型,則返回interpolateArray插值器

     4)如果是對(duì)象類型,且不能強(qiáng)制轉(zhuǎn)換成字符串類型,則返回interpolateObject插值器

     5)否則,返回interpolateNumber插值器

數(shù)組相關(guān)API

使用d3時(shí),會(huì)有大量的數(shù)組操作,如果能合理運(yùn)用d3提供的數(shù)組相關(guān)的函數(shù),將會(huì)使得工作效率大大提高。

d3.ascending(a,b)

如果a\b,返回1,如果a=b,返回0.

在可視化元素需要有序的時(shí)候,這個(gè)函數(shù)很有用,可以幫助我們排好序。

d3.min(),d3.max(),d3.extent()

前兩個(gè)函數(shù)知道的人應(yīng)該不少,但是最后一個(gè)卻相對(duì)冷門(mén),它可以直接返回?cái)?shù)組自然排序的最小值和最大值,省的同時(shí)調(diào)用前面兩個(gè)函數(shù)了。

d3.sum(),d3.mean(),d3.median(),d3.quantile()

基本的求和、平均數(shù)、中位數(shù)、p分位數(shù),都幫你實(shí)現(xiàn)好了,之前還傻乎乎的自己去實(shí)現(xiàn)了,雖然不難,但是代碼會(huì)很難看。

d3.shuffle(array)

用Fisher-Yates shuffle算法把傳入的數(shù)組隨機(jī)排序。這樣想得到亂序的時(shí)候會(huì)不會(huì)比較高大上呢?嘿嘿。

d3.keys(object),d3.values(object)

keys返回一個(gè)包含指定對(duì)象(關(guān)聯(lián)數(shù)組)中所有屬性名稱的數(shù)組。這點(diǎn)很有用,比如用d3.csv()讀文件的時(shí)候,想要濾掉一些無(wú)關(guān)的dimension,比如id等等,用這個(gè)函數(shù)就很有用。

d3.map(),d3.set()

映射與集合是很常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),但是不是所有js版本中都有默認(rèn)的實(shí)現(xiàn)的,但是d3提供了。昨天在做項(xiàng)目的時(shí)候就遇到了這個(gè)問(wèn)題,最后是借用了d3提供的map與set解決了。

d3.merge(arrays)

合并指定參數(shù)arrays為一個(gè)數(shù)組,與內(nèi)置的concat類似,不過(guò)處理二維數(shù)組的時(shí)候,它會(huì)更方便。

d3.zip(arrays),d3.pairs(arrays)

d3.zip(【1,2】,【3,4,5】)返回【【1,3】,【2,4】】有啥用自己體會(huì)。

d3.pairs(【1,2,3,4】)返回【【1,2】,【2,3】,【3,4】】

d3.transpose(matrix)

轉(zhuǎn)置二維矩陣用的。

brush

作為一個(gè)可視化系統(tǒng),怎么能沒(méi)有brush!實(shí)現(xiàn)brush的功能非常簡(jiǎn)單,構(gòu)造刷子之前,需要制定x/y比例尺和空的范圍。繪制的刷子可以重新調(diào)整大小和位置。

時(shí)間的計(jì)數(shù)

d3.time.dayOfYear(date) 返回參數(shù)date是一年里的第幾天,1月1日是第0天。

weekOfYear….等等函數(shù)也是有的,需要用的時(shí)候可以查查API,省的寫(xiě)閏年的判斷,嘿嘿。

布局

Stack(layers【,index】) ,讓我記憶最深,之前做一個(gè)項(xiàng)目的時(shí)候,就不知道有這東西存在,愣是自己實(shí)現(xiàn)了一遍,麻煩不說(shuō),對(duì)不對(duì)可能還一定.

地理

地理的API這塊我很陌生,沒(méi)有什么機(jī)會(huì)做這方面的項(xiàng)目,所以用的很少,后面有機(jī)會(huì)再來(lái)補(bǔ)充.

幾何

同樣陌生的還有幾何這部分的內(nèi)容,比如四叉樹(shù)/凸包/多邊形/泰森多邊形,記住這部分有就可以了,后面用過(guò)之后再來(lái)補(bǔ)充.

行為

由zoom和drag兩部分組成,很重要卻很簡(jiǎn)單的內(nèi)容,希望好好掌握。

以上是“d3.js中內(nèi)置函數(shù)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI