javascript d3-cloud中的单词重叠

8ehkhllq  于 2023-01-08  发布在  Java
关注(0)|答案(1)|浏览(152)

我尝试使用d3和d3-cloud来显示关键字云。它工作正常,但我唯一的问题是单词重叠,我不明白为什么。我认为它来自fontSize,但我找不到确切的原因。screen here
下面是我的不同方法:

private _populate(keyword: any) {
        const dataset = kw.map(function (d: any) { return { text: d.text, size: d.value }; });
        console.log(dataset);

        d3.layout.cloud()
            .size([this._width, this._height])
            .words(dataset)
            .padding(1)
            .rotate(0)
            .fontSize((d: any) => d.size / 100)
            .on('end', () => {
                this._drawWordCloud(dataset);
            })
            .start();
    }

    private _drawWordCloud(words: any) {
        this._svg
            .append("g")
                .attr("transform", "translate(" + this._width / 2 + "," + this._height / 2 + ")")
                .selectAll("text")
                .data(words)
                .enter().append("text")
                    .style("font-size", (d: any) => d.size + "px")
                    .style("fill", "#69b3a2")
                    .style("font-family", "Impact")
                    .attr("text-anchor", "middle")
                    .attr("transform", (d: any) => "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")")
                    .text((d: any) => d.text);
    }

.字体大小((d:any)=〉d.size / 100),因为我的值非常高(~ 10000)。
有人能帮助我吗?我找到的各种解决方案(很少)都不起作用。
谢谢!

of1yzvn4

of1yzvn41#

我终于找到了解决办法。你必须在第一个方法“_populate”中添加你想要使用的字体。在我的例子中:

.font("Impact")

我们不改变第二种方法中的行:

.style("font-family", "Impact")

就这样吧!我希望它能帮助到其他人

相关问题