2016-01-27 26 views
0

我有一个d3强制有向图,显示用户 - 主题关系。我想将其折叠到用户用户图中。如何将用户 - 主题网络图折叠为用户 - 用户图?

enter image description here 我的节点数据如下:

[{ 
    "id": "USER", 
    "type": "u", 
}, { 
    "id": "USER", 
    "type": "u", 
}, { 
    "id": "USER", 
    "type": "u", 
}, { 
    "id": "TOPIC", 
    "type": "t", 
}, { 
    "id": "TOPIC", 
    "type": "t", 
}] 

我的边沿的数据是这样的:

[{ 
    "source": "TOPIC", 
    "target": "USER", 
    "score": 5 
}, { 
    "source": "TOPIC", 
    "target": "USER", 
    "score": 48 
}] 

我怎么会去折叠曲线?

回答

0

我之前不得不做这个任务,所以这比潜在答案更像是一个潜在隐患的警告,但它可能是有用的,它不适合评论。

重点是你需要建立一个新的边缘集合,但有一些不平凡的决定/假设需要做出。

首先排序,然后按主题划分你当前的一组边。然后,在每个主题边缘集中提及的用户集应该在用户 - 用户图中彼此连接,因为它们共享主题。你现在的第一个问题是你应该如何处理原始数据集中的分数,他们现在的含义是什么?两个用户之间对于上面提到的那条边缘数据有什么联系? 48 + 5? (48 + 5)/ 2?未知?

一旦您为多个主题执行此操作,您将在同一用户之间获得多个边,如果他们有多个共同主题。那么你在这里做什么?保留单独的边,这需要一些方法来区分它们在数据集中(它们需要不同的ID,它们需要合并主题以及用户ID)并且可视化,就像默认的布局边缘会相互重叠。或者你可以合并不同主题的用户之间的边界,但是又如何计算你的分数?每个添加的链接简单+1?一些基于个人分数链接的公式?

好消息是你不需要对节点集做任何事情。用户已经在那里,只是过滤掉话题。