座標軸: 是可視化圖表中常常出現的一種圖形,由一些列線段和刻度組成。座標軸在 SVG 中是沒有現成的圖形元素的,須要用其餘的元素組合構成。D3 提供了座標軸的組件,如此在 SVG 畫布中繪製座標軸變得像添加一個普通元素同樣簡單。app
- 座標軸的組成dom
在 SVG 畫布的預約義元素裏,有六種基本圖形:svg
另外,還有一種比較特殊,也是功能最強的元素:spa
畫布中的全部圖形,都是由以上七種元素組成。顯然,這裏面沒有座標軸 這種元素。所以,咱們須要用其餘元素來組合成座標軸,最終使其變爲相似如下的形式:code
<g>
<!-- 第一個刻度 -->
<g>
<line></line> <!-- 第一個刻度的直線 -->
<text></text> <!-- 第一個刻度的文字 -->
</g>
<!-- 第二個刻度 -->
<g>
<line></line> <!-- 第二個刻度的直線 -->
<text></text> <!-- 第二個刻度的文字 -->
</g> ...... <!-- 座標軸的軸線 -->
<path></path>
</g>
- 定義座標軸orm
// 數據
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); // 指定刻度的數量
- 在SVG中添加座標軸blog
svg.append("g") .call(axis);
- 設定座標軸的樣式和位置form
<style> .axis path, .axis line{ fill: none; stroke: black; shape-rendering: crispEdges;
} .axis text { font-family: sans-serif; font-size: 11px;
} </style>
座標軸的位置,能夠經過 transform 屬性來設定。一般在添加元素的時候就一併設定,寫成以下形式:class
svg.append("g") .attr("class","axis") .attr("transform","translate(20,130)") .call(axis);
頁面效果:可視化