2017-04-25 108 views
1

我是初學者編程人員,他嘗試分析我的Twitter帳戶的網絡。 我寫這段代碼:如何製作twitter的網絡圖(Python3)

api = twitter.Api(consumer_key = my_consumer_key, 
      consumer_secret = my_consumer_secret, 
      access_token_key = my_access_token_key, 
      access_token_secret = my_access_token_secret, 
      input_encoding = "UTF-8", 
      sleep_on_rate_limit=True) 


friends = api.GetFriends() 

G = networkx.Graph() 

for friend in friends: 
    G.add_edge(myname,friend.screen_name) 


for friend in friends[-3:]: 
    for user in api.GetFriends(friend.id): 
     if user in friends: 
      G.add_edge(friend.screen_name,user.screen_name) 


pos = spring_layout(G) 


draw_networkx_nodes(G, pos, node_size = 100, node_color = 'w') 
draw_networkx_edges(G, pos, width = 1) 
draw_networkx_labels(G, pos, font_size = 12, font_family = 'sans- 
serif', font_color = 'r') 

xticks([]) 
yticks([]) 
savefig("egonetwork.png") 
show() 

我能拿但導致這是由於節點數量巨大的那麼複雜。因此,我想要減少節點數量(追隨者),例如5或6個節點。我應該編輯哪個部分?如果詳細解釋,我們將不勝感激。

回答

2

如果我正確理解你的問題,你想選擇最多5/6追隨者和他們的互連。

如果是這樣的話,我建議你改變你的for循環,使得最多五個節點被添加到圖中。此外,您需要確保只添加您添加到圖表中的五個追隨者的追隨者。

for i in range(min(5, len(friends))): 
    G.add_edge(myname,friends[i].screen_name) 
    for user in api.GetFriends(friends[i].id): 
     if user in friends[:min(5, len(friends))]: 
      G.add_edge(friend.screen_name,user.screen_name) 

在第一個for循環中,您最多可以將5個追隨者添加到圖中。 然後第二個循環會遍歷剛剛添加的節點的所有追隨者,並將它的互連添加到其他四個追隨者。

+0

非常感謝您的回答。當我運行這段代碼時,我得到了「int」對象不可迭代的「對於這個部分」我爲min in(5,len(friends)):「並嘗試解決。但我無法做到。發生什麼事 ? – user7421972

+1

嗨,對不起,我忘了在第一行添加範圍(min(5,len(friends))。更新了答案,我希望它按照預期工作。 – xTikka