Похоже, «созданием кластеров» вы называете укладку графа.
Для начала определитесь, что у вас все-таки есть: координаты вершин (зачем тогда укладка, ее цель — как раз определить координаты для вершин), попарные расстояния (между всеми вершинами, или только между связанными), или только связи.
В основе любой укладки лежит бинарная метрика для вершин. Простейшая метрика: 1 — есть связь, 0 — нет связи. В зависимости от имеющейся информации и целей можно изобретать более сложные метрики. Если у вас есть попарные расстояния между вершинами — имеет смысл применить их в метрике.
Самые распространенные методы укладки: физическое (пседвофизическое) моделирование. Ребра — пружинки. См.
en.wikipedia.org/wiki/Force-directed_graph_drawing. Конкретных алгоритмов — не меньше десятка, реализаций — еще больше, от систем перечисленных на странице на Википедии по ссылке до библиотек на любых языках.
Лично я использовал программу Gephi, библиотеку Sigma.js (для укладки графа в браузере) и реализовывал алгоритмы сам. Gephi мне показалась неудобной. Не помню, есть ли там 3D. Впечатление, что готовые программы в этой области имеют тенденцию быть заточенными под какой-то конкретный способ использования, поэтому если у вас не какой-то простейший случай, рекомендую больше смотреть в сторону библиотек (это не относится к Sigma, там укладка тоже почти не настраивается).
По поводу соцсетей:
2D граф друзей Вконтакте на WebGL:
habrahabr.ru/post/144758/
ВК-приложение для построения 2D графа друзей:
vk.com/app2353824_14882053
2D-карта друзей (приложение в ФБ:
apps.facebook.com/challenger_meurs)