API, die Daten auf Twitter erhalten kann
Für mehr Informationen,
Informationen zur API-Erfassungsmethode finden Sie unter Zusammenfassung der Verfahren von der Registrierung der Twitter-API (Kontoanwendungsmethode) bis zur Genehmigung. * Die Informationen sind möglicherweise veraltet
Social graph - Wikipedia The social graph is a graph that represents social relations between entities. In short, it is a model or representation of a social network, where the word graph has been taken from graph theory.
Ein Diagramm, das die soziale Beziehung zwischen Objekten (= Knoten) zeigt. Drücken Sie die Freundschaft mit einer Linie (= Kante) aus.
Die API-Erfassung entfällt
Bibliotheksimport
import json
import random
import pandas as pd
import matplotlib.pyplot as plt
from requests_oauthlib import OAuth1Session
import emoji
import networkx as nx
Token in Variable speichern
CK = '***************************'
CS = '***************************'
AT = '***************************'
ATS ='***************************'
Funktionsdefinition
def get_twitter_session():
return OAuth1Session(CK, CS, AT, ATS)
Entscheide, was du zeichnen möchtest
user_list = ['himemoriluna','tokoyamitowa', 'amanekanatach','tsunomakiwatame','kiryucoco']
Erstellen Sie ein einfaches Wörterbuch zum Zeichnen
user_id_list = []
user_name_list = []
for user_screenname_t in user_list:
ENDPOINT = 'https://api.twitter.com/1.1/users/show.json'
SEARCH_WORD_SCREENNAME = user_screenname # twitter_ID
twitter = get_twitter_session()
params = {'screen_name': SEARCH_WORD_SCREENNAME}
req = twitter.get(ENDPOINT, params=params)
req_json = json.loads(req.text)
user_id_list += [req_json['id']]
user_name_list += [req_json['name']]
target_id_dict = {}
for i in range(0,5):
target_id_dict[user_id_list[i]] = user_list[i]
# {1200396798281445376: 'himemoriluna',
# 1200357161747939328: 'tokoyamitowa',
# 1200396304360206337: 'amanekanatach',
# 1200397643479805957: 'tsunomakiwatame',
# 1200397238788247552: 'kiryucoco'}
target_name_dict = {}
for i in range(0,5):
target_name_dict[user_list[i]] = user_name_list[i]
# {'himemoriluna': 'Himemori Luna',
# 'tokoyamitowa': 'Ewige Towa',
# 'amanekanatach': 'Kanata Amane',
# 'tsunomakiwatame': 'Zum quadratischen Wickeln',
# 'kiryucoco': 'Kiryu Coco'}
Erfasst den Benutzer, gefolgt von dem in user_list
angegebenen Benutzer, und enthält das Ergebnis im Wörterbuchtyp.
follow_ids_dict = {}
for user_id in user_id_list:
ENDPOINT = 'https://api.twitter.com/1.1/friends/ids.json'
SEARCH_WORD_ID = user_id
twitter = get_twitter_session()
params = {'screen_name': SEARCH_WORD_SCREENNAME}
req = twitter.get(ENDPOINT, params=params)
#Erhalten Sie bis zu 5000 Follow-up-Informationen
follow_ids = json.loads(req.text)
follow_ids_dict[user_id] = follow_ids['ids']
Erstellen Sie ein Wörterbuch für Benutzernamen
follow_name_dict = {}
follow_screenname_dict = {}
for user_id in follow_ids_dict.keys():
follow_name_list = []
follow_screenname_list = []
for user_id_nt in follow_ids_dict[user_id]:
ENDPOINT = endpoint['user']
SEARCH_WORD_ID = user_id_nt
twitter = get_twitter_session()
params = {'user_id': SEARCH_WORD_ID}
req = twitter.get(ENDPOINT, params=params)
req_json = json.loads(req.text)
follow_name_list += [req_json['name']]
follow_screenname_list += [req_json["screen_name"]]
follow_name_dict[target_name_dict[user_id]] = follow_name_list
follow_screenname_dict[target_name_dict[user_id]] = follow_screenname_list
Dieses Mal werden wir ein Diagramm visualisieren, in dem die Zweige ausgerichtet sind (gerichtete Zweige) und die Zweige gewichtet werden.
(Es ist problematisch, wenn das Piktogramm übrigens angezeigt wird, also löschen Sie es)
def remove_emoji(str_):
return ''.join(c for c in str_ if c not in emoji.UNICODE_EMOJI)
#Wählen Sie eine der folgenden Optionen
# use_dict = follow_ids_dict #Visualisieren Sie mit interner ID
# use_dict = follow_screenname_dict #Benutzeridentifikation(@xxxx)Visualisieren mit
use_dict = follow_name_dict #Visualisieren Sie nach Benutzername
Row_From = [] #Startpunkt
Row_To = [] #Endpunkt
for i in use_dict.keys():
for j in follow_name_dict[i]:
Row_From += [remove_emoji(target_name_dict[i])]
Row_To += [remove_emoji(j)]
result = pd.DataFrame(
data={'From':Row_From, 'To':Row_To},
columns=['From', 'To'])
result.head()
From | To | |
---|---|---|
0 | Himemori Luna | Talent Otouf |
1 | Himemori Luna | ROG Global |
2 | Himemori Luna | Fall Guys |
3 | Himemori Luna | Tomari |
4 | Himemori Luna | Nishizawa 5㍉ |
Da der Zweck dieser Zeit ein Visualisierungsexperiment ist, wird das Gewicht des Zweigs angemessen mit einer Zufallszahl bestimmt.
def return_randint(num):
return random.randrange(1, 10000)/1000000000
result['WC'] = 0
result['WC'] = result['WC'].apply(return_randint)
network = result
From | To | WC | |
---|---|---|---|
0 | Himemori Luna | Talent Otouf | 7.649000e-06 |
1 | Himemori Luna | ROG Global | 7.657000e-06 |
2 | Himemori Luna | Fall Guys | 9.127000e-06 |
3 | Himemori Luna | Tomari | 4.878000e-06 |
4 | Himemori Luna | Nishizawa 5㍉ | 8.054000e-06 |
Die Standardeinstellung "font_family" kann nur alphanumerische Zeichen anzeigen. Geben Sie an, weil Sie Japanisch anzeigen möchten.
network_np = network.values
G = nx.DiGraph()
G.add_weighted_edges_from(network_np)
weighted_edges = []
for i in range(len(network)):
weighted_edges += [list(network.iloc[i])]
G_practice = nx.DiGraph()
G_practice.add_weighted_edges_from(weighted_edges)
pos=nx.spring_layout(G)
fig = plt.figure(figsize=(40, 40), dpi=100,facecolor='w', linewidth=0, edgecolor='w')
nx.draw_networkx(G_practice,pos,font_size=16,font_family='IPAexGothic')
fig.show()
↑ Ich konnte so etwas zeichnen ('ω')
Dieses Mal wurde das Diagramm der sozialen Beziehungen basierend auf den Follow-up-Informationen zu Tiwtter erstellt. In Zukunft werden wir nach Variablen suchen, die Beziehungen genauer beschreiben können, und basierend darauf werden wir die Gewichte von Zweigen anpassen und ausschneiden.
Recommended Posts