我正在使用d3.axis()创建轴标签和刻度标记,我想使用d3.select(“#axisTextIDValue”)单独引用但我看不到操纵个人的id属性轴中的文本元素。有谁知道如何为轴的刻度或文本元素创建ID值?
答案 0 :(得分:7)
虽然另一个答案确实解释了如何选择刻度,但如果要为这些生成的元素分配唯一ID,则可以使用子选择通过为您调用的g提供id或类来执行此操作轴,然后根据子阵列的位置设置子文本元素的ID:
d3.select("svg").append("g").attr("id", "axisG").call(axis);
d3.select("#axisG").selectAll("text").attr("id", function(d,i) {return "axisText" + i});
d3.select("#axisText0").node(); //demonstrates selectability
那说,这可能不是一个好主意,并且有更好的方法来处理由D3即时生成的ticks / labels / voronoi /等,但我想确保放一个回答这里,以防万一有人正在寻找如何做这种事情。
答案 1 :(得分:3)
这个棘手的部分是你不会提前知道你有什么标记或多少(除非你在你的轴上使用tickValues属性)。
通常,您可以对创建轴的组进行分类,并将其用作进一步选择的基础。例如
var axisGroup = parent.append('g')
.attr('class', 'axis')
axisGroup.call(axis);
我相信刻度线被分配了“tick”类,因此您可以选择所有刻度线:
axisGroup.selectAll('.tick');
或所有文字标签:
axisGroup.selectAll('text');