D3.js:坐標軸


坐標軸: 是可視化圖表中經常出現的一種圖形,由一些列線段和刻度組成。坐標軸在 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);

頁面效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM