我在D3js中有一个带有图例的多线图表。 我面临的两个问题
当说20个图例横向出现时它不会进入下一行。它会溢出svg。我希望它自动进入下一行。
var color = that.getColor(series);
legend = svg.selectAll(".legend").data(series.slice().reverse()).enter().append("g").attr("class", "legend").attr('transform', 'translate(-20,'+(height+50)+')');
legend.append("rect").attr("x", function(d,i){return (i*105);}).attr("y", "0").attr("width", 12).attr("height", 12).style("fill", color);
legend.append("text").attr("x", function (d, i) {return (i*105+15);}).attr("y", "11").text(function (d) {return d;});
答案 0 :(得分:0)
主要逻辑是计算图例组的翻译。 我研究了标签的长度,如果超出宽度,我会添加一个y translate。像这样的东西:
.attr("transform", function (d, i) {
var y = line *50;
var x = col;
col += d.name.length*13+ 10;
if (col > width){
//width is exceeded add new line
x = 0;
col =d.name.length*13+ 10;
line++;
y = line *50;
}