D3.js:坐标轴

坐标轴: 是可视化图表中常常出现的一种图形,由一些列线段和刻度组成。坐标轴在 SVG 中是没有现成的图形元素的,须要用其余的元素组合构成。D3 提供了坐标轴的组件,如此在 SVG 画布中绘制坐标轴变得像添加一个普通元素同样简单。app

- 坐标轴的组成dom

在 SVG 画布的预约义元素里,有六种基本图形:svg

  • 矩形
  • 圆形
  • 椭圆
  • 线段
  • 折线
  • 多边形

另外,还有一种比较特殊,也是功能最强的元素:spa

  • 路径

画布中的全部图形,都是由以上七种元素组成。显然,这里面没有坐标轴 这种元素。所以,咱们须要用其余元素来组合成坐标轴,最终使其变为相似如下的形式:code

<g>
<!-- 第一个刻度 -->
<g>
<line></line>   <!-- 第一个刻度的直线 -->
<text></text>   <!-- 第一个刻度的文字 -->
</g>
<!-- 第二个刻度 -->
<g>
<line></line>   <!-- 第二个刻度的直线 -->
<text></text>   <!-- 第二个刻度的文字 -->
</g> ...... <!-- 坐标轴的轴线 -->
<path></path>
</g>

- 定义坐标轴orm

// 数据
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中添加坐标轴blog

svg.append("g") .call(axis);

- 设定坐标轴的样式和位置form

<style> .axis path, .axis line{ fill: none; stroke: black; shape-rendering: crispEdges;
} .axis text { font-family: sans-serif; font-size: 11px;
} </style>

坐标轴的位置,能够经过 transform 属性来设定。一般在添加元素的时候就一并设定,写成以下形式:class

svg.append("g") .attr("class","axis") .attr("transform","translate(20,130)") .call(axis);

页面效果:可视化

相关文章
相关标签/搜索