在d3.js选择/追加期间访问dom元素 - 创建自定义标签云

时间:2012-06-15 14:04:47

标签: javascript svg tags d3.js

我正在尝试使用d3.js创建一个单词/标签云,其中y轴由数据变量控制,而不是像普通单词/标签云中那样随机放置。所以我不介意文本放在xaxis上的位置,但我确实希望控制它在yaxis上的位置。

我的方法是为每个数据片段添加一个文本元素,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

此方法失败,因为在附加完成之前,我似乎无法访问任何先前的元素。

有关更好方法的建议或在附加期间访问元素的方法吗?

1 个答案:

答案 0 :(得分:0)

在这里,Jason Davies提供了一个很好的词云实现,其中包含了您想做的任何自定义:http://www.jasondavies.com/wordcloud/#http%3A%2F%2Fsearch.twitter.com%2Fsearch.json%3Frpp%3D100%26q%3D%7Bword%7D=cloud