这是一个技术/优化问题。使用 SA 和 bl.ocks 中的许多资源,我已经能够获得带有旋转文本的水平图例,如此处所示。我出于专有原因剪掉了它。
这是我使用的代码:
var svg_legend = d3.select("body").append("svg")
.attr("width", width+margin.left)
.attr("height", 180)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
rects=svg_legend.selectAll("rect")
.data(coldomain)
.enter().append("rect")
.attr("height", 15)
.attr("x", function(d, i) { return (i+1)*((width-margin.left)/coldomain.length); })
.attr("width", 15)
.style("fill", color);
text = svg_legend.selectAll("text")
.data(coldomain)
.enter().append("text")
.text(function(d){return d})
.style("fill", 'black')
.attr("y", 60)
.attr("x", 0)
.attr("text-anchor", "end")
.style("font-size", "12px")
.attr("transform", function(d, i) { return "translate(" + (i)*((width-margin.left)/coldomain.length)+",0) rotate(-65," + 0+"," + 0+") "; })
因此这是可行的,但似乎我应该能够一次完成矩形和文本,这样您就不必担心让它们对齐,b/c 文本会以某种方式动态同步与矩形。有没有更好的方法来实现上述目标?
感谢您的任何建议。