Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3v4响应图例_Javascript_D3.js - Fatal编程技术网

Javascript D3v4响应图例

Javascript D3v4响应图例,javascript,d3.js,Javascript,D3.js,我正在用D3V4构建一个地图响应的可视化系统,我在构建一个完全适应窗口大小的图例时遇到了一些麻烦 现在,当调整窗口的大小.attr(“width”,“1em”).attr(“height”,“1em”)以及描述每个元素的文本大小.attr(“x”,“1.8em”)时,图例的每个元素都会进行调整 但是我在修改下面的行.attr(“transform”,function(d,I){return“translate(0,+I*20+”);})时遇到了一些问题,以便在窗口变小时减小每行之间的空间 你对解

我正在用D3V4构建一个地图响应的可视化系统,我在构建一个完全适应窗口大小的图例时遇到了一些麻烦

现在,当调整窗口的大小
.attr(“width”,“1em”).attr(“height”,“1em”)
以及描述每个元素的文本大小
.attr(“x”,“1.8em”)
时,图例的每个元素都会进行调整

但是我在修改下面的行
.attr(“transform”,function(d,I){return“translate(0,+I*20+”);})时遇到了一些问题,以便在窗口变小时减小每行之间的空间

你对解决这个问题有什么建议吗?谢谢你的帮助

我的代码的一小部分:

var legend = d3.select("#legendecontainer").append("svg")
    .attr("class", "legend")
    .selectAll("g")
    .data(color.domain())
    .enter().append("g")
    .attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; })
    ;

legend.append("rect").attr("width", "1em")
    .attr("height", "1em").style("fill", color);

legend.append("text")
    .data(legendText).attr("x", "1.8em").attr("y", ".5em")
    .attr("dy", ".35em").text(function(d) { return d; });

如果正确设置svg,它将自动随容器大小进行缩放,而无需更改代码或根据em进行缩放(甚至像素单位也会进行缩放)。你的翻译是使用像素单位,所以它不是缩放,因为你已经设置好了。尝试在google中搜索“响应svg”。感谢您回答Dominic。事实上,我不想使用容器的直接缩放,以使文本的大小比其他元素的大小减少得慢,从而提高可读性。