Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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 d3文本截断/超出图表区域_Javascript_Object_D3.js - Fatal编程技术网

Javascript d3文本截断/超出图表区域

Javascript d3文本截断/超出图表区域,javascript,object,d3.js,Javascript,Object,D3.js,文本超出了图表的范围。如果i大于1500且标题长度大于5个字符,则文本向左移动100px 我做错了什么 我的做法如下: let rect = svg.selectAll('g') .data(combined) .enter() .append('g') .on('mouseover', function () { d3.select(this) .append('text') .attr('class', 'te

文本超出了图表的范围。如果i大于1500且标题长度大于5个字符,则文本向左移动100px

我做错了什么

我的做法如下:

let rect = svg.selectAll('g')
    .data(combined)
    .enter()
    .append('g')
    .on('mouseover', function () {

      d3.select(this)
        .append('text')
        .attr('class', 'text')
        .attr('x', function (d) {
          return xScale(d.revenue);
        })
        .attr('y', function (d) {
          return yScale.bandwidth() + 175;
        })
        .style('font-size', 10)
        .attr('dy', -20)
        .attr('dx', function (d, i) {
          if (d.title.length > 5 && i > 1500) {
            return -100;
          } else {
            return 10;
          }
        })
        .text(d => d.title)
    })
    .on("mouseout", function () {
      d3.select('.text')
        .remove();

    });

i
引用选择元素的索引,因为您只有一个,
i
从不超过0


如果要防止截断文本,应满足以下条件:

if (d3.select(this).attr("x") > 400)
...

或者最好根据位置设置文本锚定以实现此目的。

这是你的i>1500-这永远不会发生…如果你想防止切断文本,你应该有一个条件,如:If(d3.select(this.select)(this.attr(“x”)>400)或更好的条件,根据位置设置文本锚定以实现此目的感谢此功能,如果你给我一个答复,我会接受的