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>
现在,请求浏览器,我们将看到以下变化。