Muszę zdefiniować Social Network, analizuj go i rysuj. Oboje mogłem je wyciągnąć ręcznie i analizować go (obliczyć różne metryki) ręcznie. Ale nie chciałbym wyłączyć koła.

Próbowałem użyć MATPOTLIB, ale muszę użyć go interaktywnie, a w kilku liniach, powiedz mu, jak załadować dane, a następnie zadzwonić do funkcji renderowania, który spowoduje wykres jako SVG.

Jak mogę wizualizować sieci społecznościowe w opisanym sposobie?

39
Mads Skjern 3 listopad 2011, 10:44

4 odpowiedzi

Najlepsza odpowiedź

Networkx to bardzo potężna i elastyczna biblioteka Pythona do pracy z wykresami sieciowymi. Kierowane i niejadane połączenia mogą być używane do łączenia węzłów. Sieci mogą być skonstruowane przez dodanie węzłów, a następnie krawędzie, które je łączą, lub po prostu przez pojawienie się par krawędziowych (niezdefiniowane węzły zostaną automatycznie utworzone). Po utworzeniu węzłów (i krawędzi) można opisać dowolnymi etykietami.

Chociaż NetworkX może być używany do wizualizacji sieci (patrz dokumentację), można korzystać z aplikacji w wizualizacji sieci, takich jak Gefi (dostępny z Gephi.org). NetworkX obsługuje szeroką gamę formatów importowych i eksportowych. Jeśli wyeksportujesz sieć za pomocą formatu, takiego jak Graphml , eksportowany plik można łatwo załadować do Gefi i wizualizowane tam.

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')
31
psychemedia 16 marzec 2013, 23:32

Istnieją trzy odpowiedzi, które wymieniają NetworkX i Gefi, ale nikt nie wspomniał narzędzie graficzne. Główną różnicą jest to, że algorytmy są realizowane w C ++, dając Zwiększenie wydajności w porównaniu z np. Networkx.

I obejmuje również wizualizację. Z witryny:

Dogodnie narysuj wykresy, używając różnych algorytmów i formatów wyjściowych (w tym do ekranu). Graph-Tool ma własne algorytmy układu i wszechstronne, interaktywne procedury rysowania oparte na Kairze i GTK +, ale może również działać jako bardzo wygodny interfejs do doskonałego pakietu Graphviz.

Oto schludny przykład z dokumentów (jest wiele więcej):

Block partition of a political blogs network

(Blokuj partycję sieci politycznych).

I kod dla tego:

>>> 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")
<...>

(Uwaga: Pozycje każdego węzła jest z góry określone w tym przykładzie, więc nie musiał być uruchomiony algorytm układu)

Oto kolejny przykład przy użyciu tych samych danych (a wynik jest niesamowity): http://ryancompton.net/2014/10/ 05 / Wykres-Narzędzia-Wizualizacja-jest ładna-dobra /

18
keyser 15 kwiecień 2015, 10:09

Dużo stało się tu ostatnio! Netwulf jest biblioteką poświęconą włączenie Łatwa powtarzalna interaktywna wizualizacja sieci w Pythonie (Zastrzeżenie: Jestem współpracownikiem).

img

Sprawdź także WebWeb, co jest lepsze, jeśli chcesz wyeksportować sieć jako HTML.

12
Ulf Aslak 19 czerwiec 2019, 06:08

Innym sposobem jest Cytoscape. Możesz również używać z plikami GML.

Podobnie jak Psychemedia powiedziała, możesz użyć NetworkX, aby wykresować wykres i eksportować do pliku GML.

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

Następnie w Cytosape kliknij z pliku sieciowego i wybierz plik GML. Tam też możesz zmienić styl.

4
anapaulagomes 12 sierpień 2014, 15:47