axis
image.png

d3.axisTop(scale) 创建一个Axis对象

d3.axisLeft(scale) 创建一个Axis对象

d3.axisRight(scale) 创建一个Axis对象

d3.axisBottom(scale) 创建一个Axis对象

axis.scale([scale]) 为Axis对象设置scale

axis.ticks(arguments…)

axis.ticks([count[, specifier]])

axis.ticks([interval[, specifier]])

  1. axis.ticks(10);
  2. // 等价与
  3. axis.tickArguments([10]);
  4. axis.ticks(20, "s");
  5. // 等价与
  6. axis.tickArguments([20, "s"]);
  7. // 每隔 15 分钟生成一个刻度的时间比例尺:
  8. // 等价 axis.tickArguments([d3.timeMinute.every(15)]);
  9. axis.ticks(d3.timeMinute.every(15));

axis.tickArguments([arguments])

axis.tickValues([values]) 设置刻度的值

  1. var xAxis = d3.axisBottom(x)
  2. .tickValues([1, 2, 3, 5, 8, 13, 21]);

axis.tickFormat([format]) 格式化x轴刻度内容输出

image.png

  1. axis.tickFormat(d3.format(",.0f"));
  2. // 等价
  3. axis.ticks(10, ",f");
  4. axis.tickFormat(function (v) {
  5. return 'ccc' + v + '$'
  6. });

_

axis.tickPadding([padding: number]); 设置刻度与线的距离

image.png -20的效果

  1. axis.tickPadding(-20);

axis.tickSize([size]) 设置内侧和外侧刻度的长度

image.png

  1. axis.tickSize(20)

axis.tickSizeInner([size]) 设置内侧刻度的长度

image.png axis.tickSizeInner(20)

axis.tickSizeOuter([size]) 设置外侧刻度的长度

image.pngaxis.tickSizeOuter(20)
_

axis(context) <源码>

将坐标轴渲染到指定的 context, context 可能是一个包含SVG元素的 selection(SVG 或者 G 元素) 也可能是一个 transition.

例子

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>d3 5.15.1</title>
  5. <style>
  6. * {
  7. margin: 0;
  8. padding: 0;
  9. }
  10. .text {
  11. text-indent: 2em;
  12. }
  13. .pre {
  14. white-space: pre-wrap;
  15. background-color: #eee;
  16. border: 1px solid #ccc;
  17. }
  18. </style>
  19. <script src="../lib/d3.js" type="text/javascript"></script>
  20. </head>
  21. <body>
  22. <a href="../index.html">首页</a>
  23. <br />
  24. <script>
  25. var h = 200;
  26. var w = 50;
  27. var offsetX = 50;
  28. var offsetY = 30;
  29. scale = d3.scaleLinear().domain([10, 0]).range([0, h]);
  30. axis = d3.axisLeft().scale(scale);
  31. d3.select("body").append("svg")
  32. .attr("width", w)
  33. .attr("height", h + offsetX)
  34. .append("g")
  35. .attr("transform", `translate(${offsetX / 2}, ${offsetY})`)
  36. .call(axis);
  37. w = 200;
  38. h = 50
  39. var scale = d3.scaleLinear().domain([0, 10]).range([0, w]);
  40. var axis = d3.axisTop(scale);
  41. d3.select("body").append("svg")
  42. .attr("width", w + offsetX)
  43. .attr("height", h)
  44. .append("g")
  45. .attr("transform", `translate(${offsetX / 2}, ${offsetY})`)
  46. .call(axis);
  47. </script>
  48. </body>
  49. </html>