2014-06-06 20 views
1

在D3中,如果你想創建一個軸,你可以做這樣的事情:D3:通過一個座標軸時量程做了什麼?

var xAxis = d3.svg.axis() 
.scale(x) 

其中x是一個尺度函數。我知道x的域定義了滴答的開始和結束值。我無法理解x的範圍如何改變結果軸。域在軸的上下文中映射到什麼位置?

+1

範圍決定軸和域的長度,刻度和它們的值。 –

+0

@LarsKotthoff你認爲軸的長度是什麼意思?我嘗試調整範圍的第一個值,它看起來像移動了開始位置,範圍的第二個值移動了結束位置,但我不確定這些值應該表示什麼。 –

+0

這些值是像素。範圍的開始和結束之間的差異是以像素爲單位的長度。 –

回答

2

想一想爲了創建任何數據集的可視表示,必須做些什麼。您必須將每個數據點(例如100萬美元)轉換爲屏幕上的一個點。如果您的數據的最小值爲$ 0,最大值爲$ 1000000,則您的域名爲0至1000000.現在要在計算機屏幕上表示您的數據,您必須將每個數據點(例如$ 25)轉換爲多個像素。你可以嘗試一個簡單的1到1線性轉換(25美元轉換爲屏幕上的25個像素),在這種情況下,你的範圍將與你的域= 0到1000000相同。但是這需要一個血腥的大屏幕。我們更有可能知道圖形在屏幕上顯示的大小,因此我們相應地設置了範圍(例如0到600)。

d3比例函數將數據集中的每個數據點轉換爲您範圍內的相應值。這使它能夠呈現在屏幕上。前面的例子是一個簡單的轉換,所以d3.scale()函數對你沒什麼用處,但花一些時間將數據點轉換成可視化表示,並且你會很快發現一些情況,其中scale函數做了很多工作爲你。

在一個軸的特定情況下,標尺函數完全一樣。它正在對每個「打勾」進行轉換(以像素爲單位)並將它們放置在屏幕上。