標籤:
座標軸: 是可視化圖表中經常出現的一種圖形,由一些列線段和刻度組成。座標軸在 SVG 中是沒有現成的圖形元素的,需要用其他的元素組合構成。D3 提供了座標軸的組件,如此在 SVG 畫布中繪製座標軸變得像添加一個普通元素一樣簡單。
- 座標軸的組成
在 SVG 畫布的預定義元素裡,有六種基本圖形:
另外,還有一種比較特殊,也是功能最強的元素:
畫布中的所有圖形,都是由以上七種元素組成。顯然,這裡面沒有座標軸 這種元素。因此,我們需要用其他元素來組合成座標軸,最終使其變為類似以下的形式:
<g><!-- 第一個刻度 --><g><line></line> <!-- 第一個刻度的直線 --><text></text> <!-- 第一個刻度的文字 --></g><!-- 第二個刻度 --><g><line></line> <!-- 第二個刻度的直線 --><text></text> <!-- 第二個刻度的文字 --></g> ......<!-- 座標軸的軸線 --><path></path></g>
- 定義座標軸
// 資料var dataset = [2.5, 2.1, 1.7, 1.3, 0.9];// 定義比例尺var linear = d3.scale.linear() .domain([0, d3.max(dataset)]) .range([0, 250]);var axis = d3.svg.axis() .scale(linear) // 指定比例尺 .orient("bottom") // 指定刻度的方向 .ticks(7); // 指定刻度的數量
- d3.svg.axis():D3 中座標軸的組件,能夠在 SVG 中產生組成座標軸的元素。
- scale():指定比例尺。
- orient():指定刻度的朝向,bottom 表示在座標軸的下方顯示。
- ticks():指定刻度的數量。
- 在SVG中添加座標軸
svg.append("g") .call(axis);
- 設定座標軸的樣式和位置
<style>.axis path,.axis line{ fill: none; stroke: black; shape-rendering: crispEdges;}.axis text { font-family: sans-serif; font-size: 11px;}</style>
座標軸的位置,可以通過 transform 屬性來設定。通常在添加元素的時候就一併設定,寫成如下形式:
svg.append("g") .attr("class","axis") .attr("transform","translate(20,130)") .call(axis);
頁面效果:
D3.js:座標軸