2016-01-27 5 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? Неизвестный?

Как только вы сделаете это для более чем одной темы, вы получите несколько краев между одними и теми же пользователями, если они имеют более одной общей темы. Итак, что вы здесь делаете? Сохраните отдельные ребра, которые потребуют какого-то метода их дифференцирования как в наборе данных (им понадобятся разные идентификаторы, которые включают в себя тему, так и идентификаторы пользователей) и визуально, так как при компоновке по умолчанию края будут перекрывать друг друга. Или вы могли бы затем объединить края между пользователями для разных тем, но опять же, как вы рассчитываете свой счет? Простой +1 для каждой добавленной ссылки? Некоторая формула, основанная на ссылках отдельных баллов?

Хорошей новостью является то, что вам не нужно ничего делать с набором узлов. Пользователи уже есть, просто отфильтруйте темы.