Die Knoten meiner Diagramme sind Instanzen, die einige Methoden haben. Ich habe die Knoten korrekt hinzugefügt, aber jetzt möchte ich überprüfen, ob für diese Knoten, wenn sie die gleiche group_id, add_edges haben. Ich bin mit IGRAPHSo fügen Sie Kanten hinzu, die dem Objektattribut unter Verwendung von iigraph und python entsprechen
import igraph as ig
def making_graph(researchers):
g = ig.Graph()
for each in researchers:
for i in range(len(each)):
g.add_vertex(each[i])
g.vs[i]['researcher_id'] = each[i].get_researcher_id()
g.vs[i]['name'] = each[i].get_name()
g.vs[i]['sex'] = each[i].get_sex()
g.add_edges() # if researchers have the same group_id, add edge
return g
Die Klasse für Forscher ist
class Researcher:
def __init__(self, group_id, research_id, name, tit, sex,
tot_nac_2011, tot_nac_2014, tot_int_2011, tot_int_2014, tot_bbl_2011, tot_bbl_2014):
self.group_id = group_id
self.research_id = research_id
self.name = name
self.tit = tit
self.sex = sex
self.producao = [tot_nac_2011, tot_nac_2014, tot_int_2011, tot_int_2014, tot_bbl_2011, tot_bbl_2014]
def get_group_id(self):
return self.group_id
def get_researcher_id(self):
return self.research_id
def get_sex(self):
return self.sex
und wenn ich making_graph
nennen passiere ich eine Liste mit einer Liste von Forschern
EDITED. Dies funktioniert auch nicht. Warum?
def making_graph(researchers):
g = ig.Graph()
for each in researchers:
for i in range(len(each)):
g.add_vertex(each[i])
g.vs[i]['researcher_id'] = each[i].get_researcher_id()
g.vs[i]['name'] = each[i].get_name()
g.vs[i]['sex'] = each[i].get_sex()
for other in researchers:
for j in range(len(other)):
if each[i].get_group_id() == other[j].get_group_id():
g.add_edge([(g.vs[i], g.vs[j])])
return g
Meinen Sie, wenn _alle_ Forscher die gleiche 'group_id' haben? –
Für diesen speziellen Fall, ja. Aber wenn ich mehr Graphiken (106.000) sammle, muss ich auf die Nodes-Methode forcer.get_group_id() zugreifen, und wenn es die gleiche von einem anderen Node ist, dann add_edge (forscher1, forscher2) –
Schritt für Schritt. Vielleicht möchten Sie [diese Frage] (http://stackoverflow.com/questions/3844801/check-if-all-elements-in-a-list-are-identical) überprüfen. –