[英]Python friends network visualization
我有數百個列表(每個列表對應1個人)。 每個列表包含100個字符串,這是該人的100個朋友。
我想根據他們擁有的普通朋友的數量,對這個人網絡進行3D可視化。 考慮到任何2個列表,它們具有的字符串越多,它們在這個3D圖形中應該越接近一起出現。 我想將每個列表顯示為3D圖形上的點,而點之間沒有節點/連接。
為簡潔起見,我在這里只包括3個人。
person1 = ['mike', 'alex', 'arker','locke','dave','david','ross','rachel','anna','ann','darl','carl','karle']
person2 = ['mika', 'adlex', 'parker','ocke','ave','david','rosse','rachel','anna','ann','darla','carla','karle']
person3 = ['mika', 'alex', 'parker','ocke','ave','david','rosse','ross','anna','ann','darla','carla','karle', 'sasha', 'daria']
Gephi設置步驟:
Gephi
然后啟動它 Workspace1
Graph Streaming
插件 Streaming
選項卡中顯示configure server以使用http
和端口8080
Python步驟:
gephistreamer
包( pip install gephistreamer
) 將以下python cod復制到friends.py
東西:
from gephistreamer import graph
from gephistreamer import streamer
import random as rn
stream = streamer.Streamer(streamer.GephiWS(hostname="localhost",port=8080,workspace="workspace1"))
szfak = 100 # this scales up everything - somehow it is needed
cdfak = 3000
nodedict = {}
def addfnode(fname):
# grab the node out of the dictionary if it is there, otherwise make a newone
if (fname in nodedict):
nnode = nodedict[fname]
else:
nnode = graph.Node(fname,size=szfak,x=cdfak*rn.random(),y=cdfak*rn.random(),color="#8080ff",type="f")
nodedict[fname] = nnode # new node into the dictionary
return nnode
def addnodes(pname,fnodenamelist):
pnode = graph.Node(pname,size=szfak,x=cdfak*rn.random(),y=cdfak*rn.random(),color="#ff8080",type="p")
stream.add_node(pnode)
for fname in fnodenamelist:
print(pname+"-"+fname)
fnode = addfnode(fname)
stream.add_node(fnode)
pfedge = graph.Edge(pnode,fnode,weight=rn.random())
stream.add_edge(pfedge)
person1friends = ['mike','alex','arker','locke','dave','david','ross','rachel','anna','ann','darl','carl','karle']
person2friends = ['mika','adlex','parker','ocke','ave','david','rosse','rachel','anna','ann','darla','carla','karle']
person3friends = ['mika','alex','parker','ocke','ave','david','rosse','ross','anna','ann','darla','carla','karle','sasha','daria']
addnodes("p1",person1friends)
addnodes("p2",person2friends)
addnodes("p3",person3friends)
使用命令python friends.py
運行它您應該看到所有節點都出現。 有很多方法可以讓它看起來更好看,我在這里使用Force Atlas
layouter,你可以看到我在左邊使用的參數。
一些說明:
T
來顯示或消失標簽。 Window/Data Table
查看節點和邊緣中的Window/Data Table
。 這將使您開始(如您所知),但針對您的特定問題:
這是在Windows 10上使用Anaconda 4.4.1和Python 3.5.2以及Gephi 0.9.1運行的 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.