我正在尝试使用 d3.js 创建一个词/标签云,其中 y 轴由数据变量控制,而不是像普通词/标签云中的随机放置。所以我不介意文本在 x 轴上的位置,但我确实想要控制它在 y 轴上的位置。
我的方法是使用 x 属性函数为每条数据添加一个文本元素:
.attr("x", function(d,i) {
loop 10 times
generate random x
loop through previous added element <i to check for collision
no collision exit loop
if (collision) set x to somewhere off the image
此方法失败,因为在追加完成之前我似乎无法访问任何先前的元素。
对执行此操作的更好方法或在附加期间访问元素的方法有什么建议吗?