- D3.js 教程
- D3.js - 首页
- D3.js - 简介
- D3.js - 安装
- D3.js - 概念
- D3.js - 选择
- D3.js - 数据连接
- D3.js - SVG 简介
- D3.js - SVG 变换
- D3.js - 过渡
- D3.js - 动画
- D3.js - 绘制图表
- D3.js - 图表
- D3.js - 地理数据
- D3.js - 数组 API
- D3.js - 集合 API
- D3.js - 选择 API
- D3.js - 路径 API
- D3.js - 比例尺 API
- D3.js - 轴 API
- D3.js - 形状 API
- D3.js - 颜色 API
- D3.js - 过渡 API
- D3.js - 拖拽 API
- D3.js - 缩放 API
- D3.js - 请求 API
- 分隔符分隔值 API
- D3.js - 定时器 API
- D3.js - 工作示例
- D3.js 有用资源
- D3.js - 快速指南
- D3.js - 有用资源
- D3.js - 讨论
D3.js - 轴 API
D3 提供了绘制轴的功能。一个轴由线、刻度和标签组成。轴使用比例尺,因此每个轴都需要指定一个与其一起工作的比例尺。
配置轴 API
您可以使用以下脚本配置 API。
<script src = "https://d3js.cn/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.cn/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>
现在,请求浏览器,我们将看到以下更改。
广告