-
[NetworkX] 부호그래프, 기타 속성 부여하기 (파이썬 네트워크 분석 3)Data & ML & AI/NetworkX 2022. 8. 1. 20:20반응형
부호 그래프(Signed Graph) 생성하고 그리기
어떤 약물은 혈압을 올리고, 또 어떤 약물은 혈압을 낮추는 것 처럼,
실제 세계에서는 양적/음적 관계가 존재합니다.
때문에 네트워크 그래프는 양적관계, 음적관계를 표현할 수 있어야 합니다.
이런 양적/음적 관계를 표현하는 그래프를 부호그래프(Signed Graph, Signed Network)라고 부릅니다.
import networkx as nx G = nx.Graph() G.add_edge('B','A',sign='+') G.add_edges_from([('B','C',{'sign':'-'}),('C','F',{'sign':'-'}),('C','E',{'sign':'-'}), ('E','D',{'sign':'+'}),('G','F',{'sign':'+'}),('H','E',{'sign':'+'}), ('E','I',{'sign':'+'}),('E','J',{'sign':'-'}),('I','J',{'sign':'-'})]) pos=nx.spring_layout(G) # 각 노드, 엣지를 draw하기 위한 position 정보 sign = nx.get_edge_attributes(G, 'sign') nx.draw(G,pos,with_labels=True) # with_labels : 노드 이름 표시 여부 nx.draw_networkx_edge_labels(G,pos, edge_labels=sign)
이전에 다루었던 가중치(weight)의 경우, add_weighted_edges_from()라고 전용 메소드도 있었지만
부호를 다루는 메소드는 따로 없습니다.
add_edges_from()에서 추가적인 정보만 입력해 줄 뿐입니다.
이를 통해, networkx 차원에서는 weight든 sign이든,
각 엣지에 대한 일종의 label, attribute일 뿐이라는 것 역시 알 수 있습니다. (오히려 더 간단하죠!)
기타 속성 부여하기
위에서 본 것처럼, weight, sign, relation은 물론이고 'blablabla', 'wow'라고 attribute를 설정해도 상관없습니다.
본 게시물은 Coursera의 Applied Social Network Analysis in Python(by Daniel Romero)를 통해 자습하며 작성한 게시물입니다.
반응형'Data & ML & AI > NetworkX' 카테고리의 다른 글
[NetworkX] 그래프 데이터 읽기 (파이썬 네트워크 분석 6) (1) 2022.10.11 [NetworkX] 그래프 종류 종합정리 (파이썬 네트워크 분석 5) (0) 2022.10.09 [NetworkX] 멀티그래프, Multigraph (파이썬 네트워크 분석 4) (0) 2022.08.02 [NetworkX] 가중그래프, Weighted Graph (파이썬 네트워크 분석 2) (0) 2022.07.31 [NetworkX] 무방향, 방향 그래프 생성하기 (파이썬 네트워크 분석 1) (0) 2022.07.30