D3 庫所提供的所有 API 都在 d3 命名空間下。 d3 函式庫使用語意版本命名法(semantic versioning)。 你可以用 d3.version
查看目前的版本資訊。
d3 (核心部分)
選擇集
過渡效果
-
d3.transition - 開始一個動畫轉場。 簡單教學
-
transition.delay - 指定每個元素過渡的延遲時間(單位:毫秒ms)。
-
transition.duration - 指定每個元素過渡的持續時間(單位:毫秒ms)。
-
transition.ease - 指定過渡的緩衝函數。
-
transition.attr - 平滑過渡到新的attr屬性值(起始屬性值為目前屬性)。
-
transition.attrTween - 在不同attr屬性值之間平滑過渡(起始屬性值可在過渡函數中設定,甚至整個過渡函數都可以自訂)。
-
transition.style - 平滑過渡到新的style屬性值。
-
transition.styleTween - 在不同style屬性值之間平滑過渡。
-
transition.text - 在過渡開始時設定文字內容。
-
transition.tween - 使某個屬性過渡到一個新的屬性值,該屬性可以是非attr或非style屬性,例如text。
-
transition.select - 選擇每個目前元素的某個子元素進行過渡。
-
transition.selectAll - 選擇每個目前元素的多個子元素進行過渡。
-
transition.filter - 透過資料篩選出目前元素中的部分元素進行過渡。
-
transition.transition - 目前過渡結束後開始新的過渡。
-
transition.remove - 過渡結束後移除目前元素。
-
transition.empty - 如果過渡為空就回傳true。如果目前元素中沒有非null元素,則此過渡為空。
-
transition.node - 返回過渡中的第一個元素。
-
transition.size - 傳回過渡中目前元素的數量。
-
transition.each - 遍歷每個元素執行操作。不指定觸發類型時,立即執行操作。當指定觸發類型為'start'或'end'時,會在過渡開始或結束時執行操作。
-
transition.call - 以當前過渡為this執行某個函數。
-
d3.ease - 客製化過渡的緩衝函數。
-
ease - 緩衝函數。緩衝函數可讓動畫效果更自然,例如elastic緩衝函數可用以模擬彈性物體的運動。是一種插值函數的特例。
-
d3.timer - 開始一個客製化的動畫計時。功能類似setTimeout,但內部用requestAnimationFrame實現,更有效率。
-
d3.timer.flush - 立刻執行目前沒有延遲的計時。可用於處理閃屏問題。
-
d3.interpolate - 產生一個插值函數,在兩個參數間內插。差值函數的類型會根據輸入參數的類型(數字、字串、顏色等)而自動選擇。
-
interpolate - 插值函數。輸入參數在[0, 1]之間。
-
d3.interpolateNumber - 在兩個數字間內插。
-
d3.interpolateRound - 在兩個數字間內插值,傳回值會四捨五入取整。
-
d3.interpolateString - 在兩個字串間內插。解析字串中的數字,對應的數字會插值。
-
d3.interpolateRgb - 在兩個RGB顏色間內插。
-
d3.interpolateHsl - 在兩個HSL顏色間內插。
-
d3.interpolateLab - 在兩個L*a*b*顏色間內插。
-
d3.interpolateHcl - 在兩個HCL顏色間插值。
-
d3.interpolateArray - 在兩個數列間內插。 d3.interpolateArray( [0, 1], [1, 10, 100] )(0.5); // returns [0.5, 5.5, 100]
-
d3.interpolateObject - 在兩個object間插值。 d3.interpolateArray( {x: 0, y: 1}, {x: 1, y: 10, z: 100} )(0.5); // returns {x: 0.5, y: 5.5, z: 100}
-
d3.interpolateTransform - 在兩個2D仿射變換間內插。
-
d3.interpolateZoom - 在兩個點之間平滑地縮放平移。範例
-
d3.interpolators - 新增一個自訂的插值函數.
資料操作(Working with Arrays)
-
d3.ascending - 升序排序函數.
-
d3.descending - 降序排序函數.
-
d3.min - 取得陣列中的最小值.
-
d3.max - 取得陣列中的最大值.
-
d3.extent - 取得陣列的範圍(最小值和最大值).
-
d3.sum - 取得數組中數字總和.
-
d3.mean -取得陣列中數字的算術平均值.
-
d3.median - 取得陣列中數字的中位數 (相當於 0.5-quantile的值).
-
d3.quantile - 取得排好序的陣列的一個分位數(quantile).
-
d3.bisect - 以二分法取得某個數在排好序的陣列中的插入位置(同d3.bisectRight).
-
d3.bisectRight - 取得某個數在排好序的陣列中的插入位置(相等的值歸入右邊).
-
d3.bisectLeft - 取得某個數在排好序的陣列中的插入位置(相等的值歸入左邊).
-
d3.bisector - 自訂一個二分函數.
-
d3.shuffle - 洗牌,隨機排列數組中的元素.
-
d3.permute - 以指定順序排列數組中的元素.
-
d3.zip - 將多個數組合成一個數組的數組,新數組的第i個元素是原來各個數組中第i個元素組成的數組.
-
d3.transpose - 矩陣轉置,透過d3.zip實作.
-
d3.pairs - 傳回臨近元素對的數組,d3.pairs([1, 2, 3, 4]); // returns [ [1, 2], [2, 3] , [3, 4] ].
-
d3.keys - 傳回關聯陣列(雜湊表、json、object物件)的key組成的陣列.
-
d3.values - 傳回關聯陣列的value組成的陣列.
-
d3.entries - 傳回關聯陣列的key-value實體所組成的陣列, d3.entries({ foo: 42 }); // returns [{key: "foo", value: 42 }].
-
d3.merge - 將多個陣列連成一個,類似於原生方法concat. d3.merge([ [1], [2, 3] ]); // returns [1, 2, 3].
-
d3.range - 取得數列. d3.range([start, ]stop[, step])
-
d3.nest - 取得nest對象,將陣列組織成層級結構.範例:http://bl.ocks.org/phoebebright/raw/3176159/
-
nest.key - 為nest層級結構增加一個層級.
-
nest.sortKeys - 將目前的nest層級結構依key排序.
-
nest.sortValues - 將葉nest層級依value排序.
-
nest.rollup - 設定修改葉節點值的函數.
-
nest.map - 執行nest操作, 傳回一個關聯數組(json).
-
nest.entries - 執行nest運算, 傳回一個key-value陣列. 如果nest.map回傳的結果類似{ foo: 42 }, 則nest.entries回傳的結果類似[{ key: "foo", 值: 42}].
-
d3.map - 將javascript的object轉換為hash,屏蔽了object的原型鏈功能導致的與hash不一致的問題。
-
map.has - map有某個key就回傳true.
-
map.get - 傳回map某個key對應的value.
-
map.set - 設定map中某個key對應的value.
-
map.remove - 刪除map中的某個key.
-
map.keys - 傳回map中所有key組成的陣列.
-
map.values - 傳回map中所有value組成的陣列.
-
map.entries - 傳回map中所有entry(key-value鍵值對)組成的陣列.類似{ foo: 42 }轉換成[{key: "foo", value: 42 }]
-
map.forEach - 對map中每一個entry執行某個函數.
-
d3.set - 將javascript的array轉化為set,屏蔽了array的object原型鏈功能導致的與set不一致的問題。 set中的value是array中每個值轉換成字串的結果。 set中的value是去重過的。
-
set.has - 回傳set中是否含有某個value.
-
set.add - 增加某個value.
-
set.remove - 刪除某個value.
-
set.values - 傳回set中的值組成的陣列.set中的value是去重過的.
-
set.forEach - 對set中每一個value執行某個函數.
Math
載入外部資源(Loading External Resources)
字串格式化(String Formatting)
-
d3.format - 將數字轉換成指定格式的字串。轉換的格式非常豐富,且非常聰明。
-
d3.formatPrefix - 以指定的值和精確度獲得一個[SI prefix]物件。這個函數可用來自動判斷資料的量級, 如K(千),M(百萬)等等。範例: var prefix = d3.formatPrefix(1.21e9); console.log(prefix.symbol); // “G”; console.log(prefix.scale(1.21e9)); // 1.21
-
d3.requote - 將字串轉義成可在正規表示式中使用的格式。如 d3.requote(‘$'); // return “$”
-
d3.round - 設定某個數字以小數點後多少位元取整。與toFixed()類似,但回傳格式為number。 如 d3.round(1.23); // return 1; d3.round(1.23, 1); // return 1.2; d3.round(1.25, 1); // return 1.3
CSV 格式化 (d3.csv)
-
d3.csv - 取得一個CSV (comma-separated values, 冒號分隔值)檔案。
-
d3.csv.parse - 將CSV檔案字串轉換成object的陣列,object的key由第一行決定。如: [{"Year": "1997", "Length": "2.34"}, {"Year": "2000", "Length": "2.38"}]
-
d3.csv.parseRows - 將CSV檔案字串轉換成陣列的陣列。如: [ ["Year", "Length"],["1997", "2.34"],["2000", "2.38"] ]
-
d3.csv.format - 將object的陣列轉換成CSV檔案字串,是d3.csv.parse的逆操作。
-
d3.csv.formatRows - 將陣列的陣列轉換成CSV檔案字串,是d3.csv.parseRows的逆操作。
-
d3.tsv - 取得一個TSV (tab-separated values, tab分隔值)檔案。
-
d3.tsv.parse - 類似d3.csv.parse。
-
d3.tsv.parseRows - 類似d3.csv.parseRows。
-
d3.tsv.format - 類似d3.csv.format。
-
d3.tsv.formatRows - 類似d3.csv.formatRows。
-
d3.dsv - 建立一個類似d3.csv的檔案處理對象,可以自訂分隔符號和mime type。如:var dsv = d3.dsv(“|”, “text/plain”);
顏色
命名空間
內部方法(Internals)
d3.scale(Scales)
定量變換(Quantitative)
-
d3.scale.linear - 建立一個線性定量變換。 (建議參考原始碼以深入理解各種變換。)
-
linear - 輸入一個定義域的值,傳回一個值域的值。
-
linear.invert - 反變換,輸入值域值回傳定義域值。
-
linear.domain - get或set定義域。
-
linear.range - get或set值域。
-
linear.rangeRound - 設定值域,並對結果取整。
-
linear.interpolate - get或set變換的插值函數,如將預設的線性內插函數替換成取整的線性內插函數d3_interpolateRound。
-
linear.clamp - 設定值域是否閉合,預設不閉合。當值域閉合時,如果內插結果在值域之外,會取值域的邊界值。如值域為[1, 2],內插函數的計算結果為3,若不閉合,最終結果為3;若閉合,最終結果為2。
-
linear.nice - 擴展定義域範圍使定義域更規整。如[0.20147987687960267, 0.996679553296417] 變成 [0.2, 1]。
-
linear.ticks - 從定義域中取出代表性的值。通常用於座標軸刻度的選取。
-
linear.tickFormat - 取得格式轉換函數,通常用於座標軸刻度的格式轉換。如:var x = d3.scale.linear().domain([-1, 1]); console.log(x.ticks(5).map(x.tickFormat(5, “ %”))); / / ["-100%", "-50%", " 0%", " 50%", " 100%"]
-
linear.copy - 從現有的變換複製出一個變換。
-
d3.scale.sqrt - 建立一個求平方根的定量轉換。
-
d3.scale.pow - 建立一個指數變換。 (可參考linear對應函數的註解)
-
pow - 輸入一個定義域的值,傳回一個值域的值。
-
pow.invert - 反變換,輸入值域值回傳定義域值。
-
pow.domain - get或set定義域。
-
pow.range - get或set值域。
-
pow.rangeRound - 設定值域,並對結果取整。
-
pow.interpolate - get或set變換的插值函數。
-
pow.clamp - 設定值域是否閉合,預設不閉合。
-
pow.nice - 擴展定義域範圍使定義域更規整。
-
pow.ticks - 從定義域中取出有代表性的值。通常用於座標軸刻度的選取。
-
pow.tickFormat - 取得格式轉換函數,通常用於座標軸刻度的格式轉換。
-
pow.exponent - get或set指數的冪次方。預設為1次方。
-
pow.copy - 從已有的變換複製出一個變換。
-
d3.scale.log - 建立一個對數轉換。 (可參考linear對應函數的註解)
-
log - 輸入一個定義域的值,傳回一個值域的值。
-
log.invert - 反變換,輸入值域值回傳定義域值。
-
log.domain - get或set定義域。
-
log.range - get或set值域。
-
log.rangeRound - 設定值域,並對結果取整。
-
log.interpolate - get或set變換的插值函數。
-
log.clamp - 設定值域是否閉合,預設不閉合。
-
log.nice - 擴充定義域範圍使定義域更規整。
-
log.ticks - 從定義域中取出有代表性的值。通常用於座標軸刻度的選取。
-
log.tickFormat - 取得格式轉換函數,通常用於座標軸刻度的格式轉換。
-
log.copy - 從已有的變換複製出一個變換。
-
d3.scale.quantize - 建立一個quantize線性變換,定義域為一個數值區間,值域為幾個離散值。
-
quantize - 輸入數值,傳回離散值。如: var q = d3.scale.quantize().domain([0, 1]).range(['a', 'b', 'c']); //q(0.3) === 'a ', q(0.4) === 'b', q(0.6) === 'b', q(0.7) ==='c;
-
quantize.invertExtent - 傳回得到某個離散值的值域範圍。 // q.invertExtent(‘a') 的結果是 [0, 0.3333333333333333]
-
quantize.domain - get或set變換的定義域。
-
quantize.range - get或set變換的值域。
-
quantize.copy - 從現有的變換複製出一個變換。
-
d3.scale.threshold - 建立一個threshold(閾值)線性變換。定義域為分隔值數值序列,值域為離散值。它與quantize的差異是quantize指定的值域為一個區間,然後均分這個區間為多個小區間,以對應各離散值。 threshold則指定各小區間的邊界分隔值。例: var t = d3.scale.threshold().domain([0, 1]).range(['a', 'b', 'c']); t(-1) === 'a' ; t(0) === 'b'; t(0.5) === 'b'; t(1) === 'c'; t(1000) === 'c'; t.invertExtent(' a'); //returns [undefined, 0] t.invertExtent('b'); //returns [0, 1] t.invertExtent('c'); //returns [1, undefined]
-
threshold - 輸入數值,傳回離散值。
-
threshold.invertExtent - 輸入離散值,傳回數值。
-
threshold.domain - get或set變換的定義域。
-
threshold.range - get或set變換的值域。
-
threshold.copy - 從已有的變換複製出一個變換。
-
d3.scale.quantile - 建構一個quantile線性變換。使用方法與quantize完全類似,差異在於quantile根據中位數來分隔區間,quantize根據算數平均值來分隔區間。 example
-
quantile - 輸入數值,傳回離散值。
-
quantile.invertExtent - 輸入離散值,傳回數值。
-
quantile.domain - get或set變換的定義域。
-
quantile.range - get或set變換的值域。
-
quantile.quantiles - 得到quantile變換的分隔值。示例: var q = d3.scale.quantile().domain([0, 1]).range(['a', 'b', 'c']); q.quantiles() returns [0.33333333333333326, 0.6666666666666665]
-
quantile.copy - 從已有的變換複製出一個變換。
-
d3.scale.identity - 建構一個identity線性變換。特殊的linear線性變換,此變換定義域和值域相同,只在一些d3內部的axis或brush模組中用到。
-
identity - identity線性變換函數。傳回輸入值。
-
identity.invert - 和identity函數相同,傳回輸入值。
-
identity.domain - get或set變換的定義域。
-
identity.range - get或set變換的值域。
-
identity.ticks - 從定義域中取出有代表性的值。通常用於座標軸刻度的選取。
-
identity.tickFormat - 取得格式轉換函數,通常用於座標軸刻度的格式轉換。
-
identity.copy - 從現有的變換複製出一個變換。
序數轉換(Ordinal)
d3.svg (SVG)
Shapes
坐標軸(Axes)
Controls
d3.time (Time)
時間格式轉換(Time Formatting)
時間轉換(Time Scales)
Time Intervals
-
d3.time.interval - 傳回一個對於本地時間時間間隔器.
-
interval - 效果同interval.floor方法.
-
interval.range - 傳回指定區間內日期.
-
interval.floor - 下捨入到最近的間隔值.
-
interval.round - 上捨入或下捨入到最近的間隔值.
-
interval.ceil - 上捨入到最近的間隔值.
-
interval.offset - 傳回指定時間間隔的日期偏移量.
-
interval.utc - 傳回對應的UTC時間間隔.
-
d3.time.day - 傳回指定時間基於天起始的時間(預設起始是12:00am).
-
d3.time.days - 傳回指定時間區間和間隔條件的所有基於天的時間,效果同day.range.
-
d3.time.dayOfYear - 計算指定時間在年中的天數.
-
d3.time.hour - 傳回指定時間基於小時起始的時間(e.g., 1:00 AM).
-
d3.time.hours - 傳回指定時間區間和間隔條件的所有小時為基礎的時間, 效果同hour.range.
-
d3.time.minute - 傳回指定時間基於分鐘起始的時間 (e.g., 1:02 AM).
-
d3.time.minutes - 傳回指定時間區間和間隔條件的基於分鐘的所有時間,效果同minute.range.
-
d3.time.month - 傳回指定時間基於月起始的時間(e.g., February 1, 12:00 AM).
-
d3.time.months - 傳回指定時間區間和間隔條件的所有基於月的時間,效果同month.range.
-
d3.time.second - 傳回指定時間基於秒起始的時間(e.g., 1:02:03 AM).
-
d3.time.seconds - 傳回指定時間區間和間隔條件的所有基於秒的時間,效果同second.range.
-
d3.time.sunday - 傳回指定時間基於Sunday起始的時間(e.g., February 5, 12:00 AM).
-
d3.time.sundays - 傳回指定時間區間和間隔條件的所有基於sunday的時間, 效果同sunday.range.
-
d3.time.sundayOfYear - 計算以sunday為基點的指定時間在一年中的周數.
-
d3.time.monday - every Monday (e.g., February 5, 12:00 AM).
-
d3.time.mondays - alias for monday.range.
-
d3.time.mondayOfYear - computes the monday-based week number.
-
d3.time.tuesday - every Tuesday (e.g., February 5, 12:00 AM).
-
d3.time.tuesdays - alias for tuesday.range.
-
d3.time.tuesdayOfYear - computes the tuesday-based week number.
-
d3.time.wednesday - every Wednesday (e.g., February 5, 12:00 AM).
-
d3.time.wednesdays - alias for wednesday.range.
-
d3.time.wednesdayOfYear - computes the wednesday-based week number.
-
d3.time.thursday - 每個星期四(例如 2 月 5 日上午 12:00)。
-
d3.time.thursdays - thursday.range 的別名。
-
d3.time.thursdayOfYear - 計算基於星期四的周數。
-
d3.time.friday - 每週五(例如 2 月 5 日上午 12:00)。
-
d3.time.fridays - friday.range 的別名。
-
d3.time.fridayOfYear - 計算基於星期五的周數。
-
d3.time.saturday - 每週六(例如 2 月 5 日上午 12:00)。
-
d3.time.saturdays - saturday.range 的別名。
-
d3.time.saturdayOfYear - 計算基於星期六的周數。
-
d3.time.week - 星期日的別名。
-
d3.time.weeks - sunday.range 的別名。
-
d3.time.weekOfYear - sundayOfYear 的別名。
-
d3.time.year - 傳回基於年份開始時間的指定時間(例如,1 月 1 日中午 12:00)。
-
d3.time.years - 傳回指定時間區間和間隔條件的所有時間,效果同year.range.
構圖(d3.layout)
捆綁包
弦圖(和弦)