D3.js - 軸 API



D3 提供了繪製軸的功能。一個軸由線、刻度和標籤組成。軸使用比例尺,因此每個軸都需要指定一個與其一起工作的比例尺。

配置軸 API

您可以使用以下指令碼配置 API。

<script src = "https://d3js.org/d3-axis.v1.min.js"></script>
<script>

</script>

軸 API 方法

D3 提供了以下幾個重要的繪製軸函式。簡要描述如下。

  • d3.axisTop() − 此方法用於建立頂部水平軸。

  • d3.axisRight() − 此方法用於建立垂直右側軸。

  • d3.axisBottom() − 此方法用於建立底部水平軸。

  • d3.axisLeft() − 它建立左側垂直軸。

工作示例

讓我們學習如何向圖表新增 x 軸和 y 軸。為此,我們需要按照以下步驟操作。

步驟 1定義變數 − 使用以下程式碼定義 SVG 和資料變數。

var width = 400, height = 400;
var data = [100, 150, 200, 250, 280, 300];
var svg = d3.select("body")
   .append("svg")
   .attr("width", width)
   .attr("height", height);

步驟 2建立線性比例尺函式 − 為 x 軸和 y 軸建立線性比例尺函式,如下所示。

var xscale = d3.scaleLinear()
   .domain([0, d3.max(data)])
   .range([0, width - 100]);

var yscale = d3.scaleLinear()
   .domain([0, d3.max(data)])
   .range([height/2, 0]);

在這裡,我們建立了一個線性比例尺並指定了域和範圍。

步驟 3將比例尺新增到 x 軸 − 現在,我們可以使用以下程式碼將比例尺新增到 x 軸。

var x_axis = d3.axisBottom()
   .scale(xscale);

在這裡,我們使用 d3.axisBottom 建立 x 軸,並提供前面定義的比例尺。

步驟 4將比例尺新增到 y 軸 − 使用以下程式碼將比例尺新增到 y 軸。

var y_axis = d3.axisLeft()
   .scale(yscale);

在這裡,我們使用 d3.axisLeft 建立 y 軸,並提供前面定義的比例尺。

步驟 5應用變換 − 您可以附加一個組元素並插入 x、y 軸,如下所示。

svg.append("g")
   .attr("transform", "translate(50, 10)")
   .call(y_axis);

步驟 6附加組元素 − 使用以下程式碼應用過渡和組元素。

var xAxisTranslate = height/2 + 10;
svg.append("g")
   .attr("transform", "translate(50, " + xAxisTranslate  +")")
   .call(x_axis)

步驟 7工作示例 − 完整的程式碼清單在以下程式碼塊中給出。建立一個網頁 axes.html 並對其進行以下更改。

<html>
   <head>
      <script type = "text/javascript" src = "https://d3js.org/d3.v4.min.js"></script>
      <style>
         svg text {
            fill: purple;
            font: 12px sans-serif;
            text-anchor: end;
         }
      </style>
   </head>

   <body>
      <script>
         var width = 400, height = 400;
         var data = [100, 120, 140, 160, 180, 200];
         var svg = d3.select("body")
            .append("svg")
            .attr("width", width)
            .attr("height", height);
         
         var xscale = d3.scaleLinear()
            .domain([0, d3.max(data)])
            .range([0, width - 100]);
         
         var yscale = d3.scaleLinear()
            .domain([0, d3.max(data)])
            .range([height/2, 0]);
    
         var x_axis = d3.axisBottom().scale(xscale);
         
         var y_axis = d3.axisLeft().scale(yscale);
         
         svg.append("g")
            .attr("transform", "translate(50, 10)")
            .call(y_axis);
         
         var xAxisTranslate = height/2 + 10;
         
         svg.append("g")
            .attr("transform", "translate(50, " + xAxisTranslate  +")")
            .call(x_axis)
      </script>
   </body>
</html>

現在,請求瀏覽器,我們將看到以下更改。

廣告