D3.js - Axis API
D3 提供繪製軸的功能。軸由線,刻度線和標籤組成。軸使用“縮放”,因此需要為每個軸指定一個縮放比例。
配置 Axis API
你可以使用以下指令碼配置 API。
<script src = "https://d3js.org/d3-axis.v1.min.js"></script>
<script>
</script>
Axis 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>
現在,請求瀏覽器,我們將看到以下更改。