D3.js:坐标轴

来源:互联网 发布:c语言实验报告流程图 编辑:程序博客网 时间:2024/05/21 08:26


坐标轴: 是可视化图表中经常出现的一种图形,由一些列线段和刻度组成。坐标轴在 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);

页面效果: