Visualization Software Cytooscape으로 일본 철도 시각화

개시하다


연구에서 Cytooscape이라는 시각화 소프트웨어를 사용할 기회가 있기 때문에 연습과 동시에 시각화를 시도하고 싶습니다.
그럼 클래식(?)철도

컨디션


Windows 10은 Anaconda가 Python 3 환경을 구축합니다.
Jupter notebook을 사용하고 있습니다.
또한 Cytooscape은 시각 형상 소프트웨어로 사용됩니다(후술).

할 일


• Cytooscape 설치
· 철도 데이터 획득
데이터 가공
• 시각화

Cytooscape 설치


Cytooscape은 생물정보시스템 등에 주로 사용되는 오픈소스 시각화 소프트웨어로, 특정 노드의 좌표를 하나씩 지정해 색상과 크기 등 외관을 바꾸고 직관적으로 편집할 수 있다는 인상을 준다.

공식 페이지에서 설치할 수 있습니다.
이번에 사용한 데스크톱 버전을 제외하고는 Cytooscape입니다.js의 라이브러리로도 제공됩니다.

철도 데이터의 입수


제가 여기 기사., 역 데이터를 참고하도록 허락해 주십시오.jp라는 역 데이터 무료 다운로드 서비스를 발견했다.
역 데이터.jp

・역(역 코드, 역 코드, 역 이름, 노선 코드, 우편 번호, 주소, 위도, 경도 등)
· 노선 (노선 코드, 명칭, 구분, 색깔 등)
・접속역(역 코드 1, 역 코드 2)
· 경영자(경영자 코드, 경영자 명칭 등)
이런 풍부한 데이터베이스는 csv 형식으로 무료로 다운로드할 수 있다.
API도 제공됩니다.
네트워크의 가시화는 노드와 가장자리, 즉 역 데이터와 연결 역 데이터가 필요하기 때문에 각각 다운로드했다.

데이터 가공


위에서 다운로드한 csv 파일을 Cytooscape에서 쉽게 사용할 수 있도록 성형을 했습니다. 원래 Jupter notebook에서 진행되었는데py 파일로 정리해 보았습니다. 댓글은 상세하지만 notebook 형식의 잔류라고 생각하십시오(^^)ω^)・・・
make_csv_station.py
import pandas as pd

# エッジのデータ読み込み
station_edges_data = pd.read_csv("./ダウンロードした接続駅データ.csv")
# このデータは必要な列を切り取る加工だけでok
station_edges = station_edges_data.iloc[:, 1:]

station_data = pd.read_csv("./ダウンロードした駅データ.csv")

#必要な列のみ切り取る(Dataframeに対するilocは,各行,列ごとにbooleanで選択できるらしい,数行なら便利かも)
station_position_data = station_data.iloc[:,[True, False, True, False, False, False, False, False, False, True, True]]

# ノードのデータ作成
station_position = pd.DataFrame(columns=['station_name', 'x', 'y'] )
# 見栄えのため,経度の数字*500をx座標に,緯度の数字*-500をy座標に設定(Cytoscapeではy軸は下向きのため負にしている)
for index, row in station_position_data.iterrows():
    station_position = station_position.append(pd.DataFrame({'station_name':[row[1]], 'x':[row[2]*500], 'y':[row[3]*(-500)]}, index=[int(row[0])]))

# csv出力
station_position.to_csv("station_potision.csv")
station_edges.to_csv("station_edges.csv")

결실


다음은 노드 스테이션position.csv는 역 코드, 역 이름, x 좌표, y 좌표를 나타낸다.
에지 스테이션edges.csv에 연결된 역 코드가 있습니다

시각화


Cytooscape을 엽니다.

에지 정보 읽기


테두리 정보망을 읽는 것만으로도 당분간 볼 수 있으니까 해봐.
네트워크 from file에서 stationedges.csv를 선택합니다.
아래 화면이 나오기 때문에 라벨을 클릭하고 다음과 같이 설정합니다(왼쪽 index 필요 없음)×,녹색은 시작이고 귤은 끝이다.

닭고기라면이 나왔습니다.

확대하면

데이터와 같이 이것은 인근 역 사이에 밀접하게 연결된 네트워크이다.

노드 정보 읽기


이어서 노드 정보(역명, 좌표)를 반영한다.
table from file로 station 만들기position.csv를 선택합니다.
이번 키는 역 코드이고 속성은 역 이름, x 좌표, y 좌표입니다. 처음부터 잘 어울려서 그렇게 OK.

이렇게 하면 아무런 반응이 없기 때문에 다음과 같은 조작을 한다.
1. control panel의 스타일 선택
2. propaties에서 x location, y location 검사

3. 가운데 맵.칸, 각각column 응용 x, y (mapping type은passthroughmapping)

그래서 좌표가 설정되어 일본의 철도 네트워크는 완벽하게 가시화되었다!스케줄러:당연하지?

마지막으로 노드의 이름을 역 코드에서 역 이름으로 변경합니다. 스타일에 대한 label은 좌표와 같습니다.name에서station-name으로 변경합니다.

스타일을 만지작거리면 잘 보인다(´63;)한번 해 봤어요. 고향인 푸산현을 보세요.

최후


예상대로 가시화할 수 있어 안심이 되지만, 줄만 서는 것도 힘들기 때문에 여기서 무게, 운임 계산, 환승까지 연결할 수 있는 사람은 위대하다고 느낀다
고맙습니다. 무슨 일이 있으면 지적해 주십시오.

좋은 웹페이지 즐겨찾기