D3刻度与背景

vsy*_*ync 2 d3.js

D3轴如何tick具有背景颜色?

这样做的一种野蛮方式是rect在每个元素中附加一个元素g.tick并且有一个元素fill,但它很难实现,因为它rect必须与内部的文本大小相同tick.

这是迈克博斯托克(以及另一个图表)的基本刻度示例


我拍了一个截图并标记(红色边框),我希望刻度线有背景颜色:

在此输入图像描述


有没有人知道任何有理由在Ticks上有背景颜色?谢谢

Cyr*_*ian 5

另一个选择是制作这样的过滤器:

  var filter = svg.append("defs").append("filter")
    .attr("x", "0")
    .attr("y", "0")
    .attr("width", "1")
    .attr("height", "1")
    .attr("id", "background")//id of the filter
  filter.append("feFlood")
    .attr("flood-color", "red");
  filter.append("feComposite")
    .attr("in", "SourceGraphic");
Run Code Online (Sandbox Code Playgroud)

并勾选添加过滤器,如下所示:

 g.selectAll(".tick text").attr("filter","url(#background)");
Run Code Online (Sandbox Code Playgroud)

这里工作代码

  • 这可以为背景生成自定义填充吗?我正在考虑过滤器,但它无法弄清楚如何让填充工作。例如,背景是带有“3px”填充的 (2认同)