네트워크는 경로가 중요하다.
경로를 짧게 가는 것도 중요하지만 여러개로 분산된 경로를 가지는 것도 중요하다.
네비게이션을 생각해보면 가까운 길이 꼭 빠른 길이 아닌 경우도 많다.
가까워도 길이 좁거나 갑자기 공사를 진행할 수도 있다.
심지어는 도로가 폐쇄 되서 아예 가지도 못할 수가 있다...
네트워크도 같은 원리에 따라 망 생존성을 위해 다양하게 분산된 경로를 가지는게 중요하다.
집까지 가는데 하나뿐인 다리가 무너져서 집으로 못가게 되면 얼마나 슬프겠는가...
그럼 이제 networkX라는 파이썬 네트워크 분석 라이브러리로 경로를 찾아보자
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
# 한글 폰트가 깨지지 않기 위한 세팅
font_path = "C:/Windows/Fonts/KTFONTBOLD.TTF"
font = font_manager.FontProperties(fname=font_path).get_name()
rc('font', family=font)
import networkx as nx
plt.figure(figsize = (5, 5))
G = nx.from_pandas_edgelist(df, '출발노드', '도착노드', ['가중치값'])
pos = nx.kamada_kawai_layout(G)
labels = nx.get_edge_attributes(G, '가중치값')
nx.draw(G, pos, with_labels=True, font_family = font)
nx.draw_networkx_edge_labels(G0, pos, labels ,font_family = font) #가중치를 선로에 표시
plt.show()
from_pandas_edgelist를 사용하면 판다스 상에서 노드끼리 경로만 잘 구성되어 있으면 자동으로 그래프 데이터를 만들어준다. 옵션으로 create_using = nx.Digraph() 을 넣어주면 방향성이 있는 그래프를 만들어준다.
G = nx.from_pandas_edgelist(df, '출발노드', '도착노드', ['가중치값'], create_using = nx.DiGraph())
제일 고생한건 한글이 깨지는 현상이 었다...
ttf 폴더에 폰트 파일을 넣어야한다는 둥 여러방법이 있었지만 해결해주는 건 없었고...
누군가의 깃허브에서 한글폰트가 깨지지 않게 해주는... 이라고 주석부분이 나를 살려줬다.
근데 그 깃허브가 뭐였는지 기억이 안난다.. 미안합니다 고맙습니다...
[실무를 위한 파이썬]xlwings로 DRM걸린 엑셀파일 자동화 (0) | 2023.11.07 |
---|---|
Pandas DataFrame는 각 요소로 numpy 배열을 가질 수 있을까? (0) | 2023.03.04 |
[파이썬 find_peaks 함수] 신호처리의 꽃 피크 찾기 (2) | 2021.10.09 |
[Pandas 웹 크롤링] ]pd.read_html로 NIST Atomic spectrum line 테이블 가져오기 (0) | 2021.06.20 |
[SciPy. curve_fit] curve_fit을 조금더 이해해보자 (0) | 2021.06.19 |