本片blog记录d3坐标轴入门,使用版本v5.9.2git
d3生成的坐标图是经过svg的path(路径)元素 + g + line + text元素组成的,以下图 github
path表示的是底部坐标轴(不包括内部刻度),以下 segmentfault
这部分经过d描绘,在d3中称为outer tick
g容器则包括了text和line做为inner tick api
line即线,text即文字app
步骤主要以下:dom
const data = [1, 10, 20]; let svgWidth = 400, svgHeight = 400;
小实验都用这些数据啦svg
/** * 建立scale */ let scale = d3.scaleLinear() .domain([0, d3.max(data)]) //输入域 .range([0, 200]); //输出域,这里可理解为坐标轴长度范围 /** * 建立axis */ let axis = d3.axisTop(scale); //建立坐标轴,除此以外还有axisLeft,axisBottom,axisRight,区别在于tick(刻度)的朝向 /** * 插入 */ d3.select('body') .append('svg') .attr('width', svgWidth) .attr('height', svgHeight) .append('g')//须要放在g容器里 .attr('transform', 'translate(10,20)') .call(axis);//建立坐标轴
坐标轴的长度来源于比例尺的range
最大值来源于d3.max(data)
200(range) / 20(最大值) = 10段
20(最大值) / 10段 = 2
因此坐标轴如是显示函数
上一个坐标轴显示了平均的刻度,可是有时这不是咱们想要的,咱们能够使用axis.tickValues()显示须要的刻度
仅需在axis后增长api便可spa
let axis = d3.axisTop(scale).tickValues(data);
也是使用axis.tickSize()便可,为方便观察,这里使用axisBottom坐标轴code
let axis = d3.axisBottom(scale).tickValues(data).tickSize(200);
其实设置样式就是对其中的svg设置,原理相似dom操做,选择svg元素,改变样式
举个简单的例子
d3.select('body') .append('svg') .attr('width', svgWidth) .attr('height', svgHeight) .append('g') .attr('transform', 'translate(10, 20)') .call(axis) .selectAll('path').attr('stroke', 'pink').attr('stroke-width', '5');
最后对g中的path进行赋样式
组合好不一样的API会有更多效果!