반응형
In [1]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
In [2]:
import networkx as nx
무방향성 그래프¶
In [3]:
#객체 생성
g1 = nx.Graph()
In [4]:
#노드 추가
g1.add_node("a")
g1.add_node(1)
g1.add_node(2)
g1.add_node(3)
g1.add_nodes_from([11, 22])
In [5]:
#노드 제거
g1.remove_node(3)
In [6]:
#엣지 추가
g1.add_edge(1, "a")
g1.add_edge(1, 2)
g1.add_edge(1, 22)
g1.add_edges_from([(1, 2), (1, 11)])
In [7]:
#엣지 제거
g1.remove_edge(1, 22)
In [8]:
#그래프 그리기
nx.draw(g1, with_labels = True, font_weigth = "bold")
In [9]:
#degree 크기에 따른 node size 설정
d = dict(g1.degree)
nx.draw(g1, nodelist = d.keys(), node_size = [v * 100 for v in d.values()], with_labels = True, font_weigth = "bold")
In [10]:
#노드 현황
g1.nodes
Out[10]:
In [11]:
#엣지 현황
g1.edges
Out[11]:
In [12]:
#degree
g1.degree
Out[12]:
In [13]:
#인접
g1.adj
Out[13]:
In [14]:
#노드의 개수
g1.number_of_nodes()
Out[14]:
In [15]:
#엣지의 개수
g1.number_of_edges()
Out[15]:
In [16]:
#요약
print(nx.info(g1))
방향성 그래프¶
In [17]:
#객체 생성
g2 = nx.DiGraph()
g2.add_edges_from([(1, 2), (1, 3), (2, 4), (3, 4)])
nx.draw(g2, with_labels = True, font_weigth = "bold")
In [18]:
g2.degree
Out[18]:
In [19]:
g2.in_degree
Out[19]:
In [20]:
g2.out_degree
Out[20]:
가중치 표시¶
In [27]:
g3 = nx.DiGraph()
g3.add_weighted_edges_from([(1, 2, 3), (2, 3, 4)])
g3.add_edge(1, 3, weight = 6)
pos = nx.spring_layout(g3)
nx.draw(g3, pos = pos, with_labels = True)
labels = nx.get_edge_attributes(g3,'weight')
nx.draw_networkx_edge_labels(g3, pos, edge_labels = labels);
판다스 데이터프레임 사용¶
In [396]:
import pandas as pd
In [511]:
df = pd.DataFrame({'from': ['A', 'B', 'C', 'A', 'E', 'D'],
'to': ['D', 'A', 'E', 'C', 'A', 'E'],
'weight': [1, 2, 3, 4, 5, 6]})
df
Out[511]:
In [513]:
g = nx.from_pandas_edgelist(df, 'from', 'to', create_using = nx.DiGraph())
nx.draw(g, with_labels=True)
반응형
'파이썬' 카테고리의 다른 글
파이썬으로 네이버 로그인 (0) | 2020.04.09 |
---|---|
파이썬으로 쿠팡 로그인 (6) | 2020.04.07 |
파이썬 리스트 관련 메소드 (0) | 2020.02.29 |
파이썬 스타일 가이드 (0) | 2020.02.24 |
주피터 노트북 단축키 for mac (0) | 2019.11.24 |