Подтвердить что ты не робот

Как визуализировать социальные сети с помощью Python

Мне нужно определить социальную сеть, проанализировать ее и нарисовать. Я мог бы нарисовать его вручную и проанализировать (рассчитать различные метрики) вручную. Но я не хотел бы изобретать велосипед.

Я пытался использовать matplotlib, но мне нужно использовать его в интерактивном режиме, и в нескольких строках рассказать, как загрузить данные, а затем вызвать функцию рендеринга, которая будет отображать график как SVG.

Как я могу визуализировать социальные сети описанным способом?

4b9b3361

Ответ 1

networkx - очень мощная и гибкая библиотека Python для работы с сетевыми графиками. Направленные и неориентированные соединения могут использоваться для соединения узлов. Сети могут быть созданы путем добавления узлов, а затем связанных с ними ребер или просто путем перечисления пар краев (undefined узлы будут автоматически созданы). После создания узлы (и ребра) могут быть аннотированы с помощью произвольных меток.

Хотя networkx можно использовать для визуализации сети (см. документацию), вы можете предпочесть использовать приложение для визуализации сети, такое как Gephi (доступно из gephi.org). networkx поддерживает широкий диапазон форматов импорта и экспорта. Если вы экспортируете сеть в формате GraphML, экспортируемый файл можно легко загрузить в Gephi и визуализировать там.

import networkx as nx
G=nx.Graph()
G.add_edges_from([(1,2),(1,3),(1,4),(3,4)])
G
>>> <networkx.classes.graph.Graph object at 0x128a930>
G.nodes(data=True)
>>> [(1, {}), (2, {}), (3, {}), (4, {})]
G.node[1]['attribute']='value'
G.nodes(data=True)
>>> [(1, {'attribute': 'value'}), (2, {}), (3, {}), (4, {})]
nx.write_graphml(G,'so.graphml')

Ответ 2

Есть три ответа, в которых упоминаются Networkx и Gephi, но никто не упоминал graph-tool. Основное различие заключается в том, что алгоритмы реализованы на С++, что обеспечивает повышение производительности по сравнению с, например, NetworkX.

И он также охватывает визуализацию. На сайте:

Удобно рисовать графики, используя различные алгоритмы и (включая экран). Графический инструмент имеет свои собственные алгоритмы компоновки и универсальные интерактивные схемы рисования на основе cairo и GTK +, но он также может работать как очень удобный интерфейс к отличному пакету Graphviz.

Здесь аккуратный пример из документов (их много):

Block partition of a political blogs network

(Блокировать раздел сети политических блогов).

И код для него:

>>> g = gt.collection.data["polblogs"]
>>> g = gt.GraphView(g, vfilt=gt.label_largest_component(gt.GraphView(g, directed=False)))
>>> state = gt.BlockState(g, B=g.num_vertices(), deg_corr=True)
>>> state = gt.multilevel_minimize(state, B=2)
>>> gt.graph_draw(g, pos=g.vp["pos"], vertex_fill_color=state.get_blocks(), output="polblogs_agg.pdf")
<...>

(Примечание: позиции каждого node предопределены в этом примере, поэтому алгоритм макета не должен выполняться)

Здесь другой пример, использующий одни и те же данные (и результат невероятный): http://ryancompton.net/2014/10/05/graph-tools-visualization-is-pretty-good/

Ответ 3

networkx и Gephi комбо классно. networkx способен выводить формат graphml. Для получения дополнительной информации о gephi: http://gephi.org/

Ответ 4

networkx является хорошим. для визуализации может понадобиться также graphviz.

Ответ 5

Хотя строго не в ваших параметрах, перед использованием Python я провел анализ социальной сети. Это было нормально, я закончил использование NodeXL (http://www.nodexl.codeplex.com/), плагина Excel (агаст!) Для проекта один раз, и я думаю, что это довольно удивительно. Делает в значительной степени то, что вы просите, и с графическим интерфейсом, и с кодовым способом программирования.

Ответ 6

Для визуализации я могу порекомендовать XDot (также на GitHub) Хосе Фонсеки. Комбинация с networkx может вам пригодиться.

Ответ 7

Другой способ - Cytoscape. Вы также можете использовать файлы gml.

Как и psychemedia, вы можете использовать Networkx для построения графика и экспорта в gml файл.

nx.write_graphml(G,'my_file.gml')

После этого в Cytoscape нажмите "Из сетевого файла" и выберите файл gml. Там вы также можете изменить стиль.

Ответ 8

Networkx - действительно аккуратная библиотека. Я бы также предложил его с Gephi, я бы знал, используя Консоль Python (я не тестировал эту комбо пока).

Раньше я использовал Ubigraph для визуализации, но он не масштабируется так хорошо, и он является собственностью.

Ответ 9

Много чего здесь произошло за последнее время! Netwulf - это библиотека, предназначенная для обеспечения простой воспроизводимой интерактивной визуализации сетей в Python (отказ от ответственности: я участник).

img

Также проверьте webweb, что лучше, если вы хотите экспортировать сеть как HTML.