D3.js 学习随便,记录几种常用的坐标轴。

  • D3.js 比例尺,把一组输入域映射到输出域的函数,我们可以用比例尺来创建坐标轴。

.domain() :设置输入域, .range() 设置输出域;下面以基础的线性比例尺为例解释说明一下。

d3.scaleLinear 线性比例尺

<!DOCTYPE html> <meta charset="UTF-8"> <title></title> </head> <div id="test-svg"> </body> <script src="https://d3js.org/d3.v5.js"></script> <script> window.onload = function() { var width = 830, height = 800; // 初始化svg var svg = d3.select("#test-svg") .append('svg') .attr('width', width + 'px') .attr('height', height + 'px'); * scaleLinear().domain([numbers]):输入域;[numbers]为数组,必须包含两个或以上的数字,且必须为数字 * scaleLinear().range([values]):输出域;[values]同样为数组 var xScale1 = d3.scaleLinear() .domain([-5, 5]) .range([20, width - 10]); var xAxis1 = d3.axisBottom().scale(xScale1); svg.append('g') .call(xAxis1); </script> </html>
  • 输入到输出的映射

d3.scaleTime 线性时间比例尺

var xScale2 = d3.scaleTime() .domain([new Date(2019, 1), new Date(2019, 6)]) .range([20, width - 40]); var xAxis2 = d3.axisBottom().scale(xScale2); svg.append('g') .attr('transform', 'translate(0,100)') .call(xAxis2); var xScale3 = d3.scaleOrdinal() .domain(xdata) .range([100, 200, 300, 400, 500, 600, 700]); var xAxis3 = d3.axisBottom().scale(xScale3); svg.append('g') .attr('transform', 'translate(0,200)') .call(xAxis3); * .tickFormat 设置刻度格式化器 var xAxis4 = d3.axisBottom().scale(xScale4).tickValues(timeTicks).tickFormat(format).tickSizeOuter(0); svg.append('g') .attr('transform', 'translate(0,300)') .call(xAxis4); .range([40, width - 40]); var xAxis5 = d3.axisBottom().scale(xScale5).tickValues(timeTicks).tickFormat(format).tickSizeOuter(0); svg.append('g') .attr('transform', 'translate(0,400)') .call(xAxis5) .selectAll("text") .attr("dy", ".75em") .attr('transform', 'rotate(-14)'); var xAxis5 = d3.axisBottom().scale(xScale5).tickValues(timeTicks).tickFormat(format).tickSizeOuter(0); svg.append('g') .attr('transform', 'translate(0,400)') .call(xAxis5) .selectAll("text") .attr("dy", trans); 文章目录预备知识关于 canvas 画布的原点画直线项目结构HTMLCSSJavaScript效果设置 canvas 起点偏移(**平移变换**)JavaScript效果画空心三角形JavaScript效果画实心三角形JavaScript效果画直角坐标系JavaScript效果参考 关于 canvas 画布的原点 在我们开始画图之前,我们需要了解一下画布栅格(canvas grid)以及坐标空间。canvas 的栅格的起点为左上角(坐标为 (0, 0))。 index 画 坐标轴 //使用d3的svg的axis()方法生成 坐标轴 var x_axis = d3.svg.axis().scale(scale_x),y_axis = d3.svg.axis().scale(scale_y)g.append("g").call(x_axis)页面效果如下:这个时候x轴在页面的上方,不在我们想要的位置,可以通过设置transform属性将 坐标轴 移到自己想要的位置画y轴g.ap... 本着学习d3 js 的原则,对函数用法做出解释,对源码写出自己的理解,文章最后补充一些源码中用到的 JS 语法,欢迎各位批评指正,学习交流!多多评论共同进步! d3.min(iterable[,accessor]) 根据顺序返回可迭代对象中的最小值,如果没有可以比较的值,返回undefined. 可选访问函数等价于调用Array.from(Array.from用法,将类似于数组的对象转化为数组,要求该...