D3.js 使用d3的水平图例在右侧被截断

D3.js 使用d3的水平图例在右侧被截断,d3.js,D3.js,根据here()代码,我创建了一个水平图例 代码如下 但它会被剪成合适的尺寸。如果可用宽度小于图例宽度,如何确保它转到下一行 此外,我已经查看了这个问题(),但无法考虑如何在我的案例中使用相同的问题。 如果有人能告诉我如何确保代码中的硬代码宽度(colorbox+文本)与我的代码中的相同,那就太好了。在翻译函数中添加以下内容 .attr('transform', function(d, i) { var horz = 10

根据here()代码,我创建了一个水平图例

代码如下

但它会被剪成合适的尺寸。如果可用宽度小于图例宽度,如何确保它转到下一行

此外,我已经查看了这个问题(),但无法考虑如何在我的案例中使用相同的问题。
如果有人能告诉我如何确保代码中的硬代码宽度(colorbox+文本)与我的代码中的相同,那就太好了。

在翻译函数中添加以下内容

       .attr('transform', function(d, i) {                   
           var horz = 100*i;                       // NEW
           var vert = 6;    
           if (horz >= width) {
              horz = 100 * (i - 4);
              vert = 40;
            }

         return 'translate(' + horz + ',' + vert + ')';        // NEW
      });   
这应该可以解决您当前的问题,但是您应该更加自动化,因为如果您的图例需要为3行,那么这可能不适合您


希望这有帮助。

如果在翻译功能中添加以下内容

       .attr('transform', function(d, i) {                   
           var horz = 100*i;                       // NEW
           var vert = 6;    
           if (horz >= width) {
              horz = 100 * (i - 4);
              vert = 40;
            }

         return 'translate(' + horz + ',' + vert + ')';        // NEW
      });   
这应该可以解决您当前的问题,但是您应该更加自动化,因为如果您的图例需要为3行,那么这可能不适合您

希望这有帮助