지도 시각화 관련 folium을 소개한 적이 있습니다. Folium은 작업후에 노트북파일을 다시 열었을때 지도 결과가 나타나지 않을때가 있어서 보관하는 문서로서는 약간 맞지 않을 때가 있습니다. 그런 목적에서 찾은 아이가 basemap입니다. basemap을 설치하기 위해서는
conda create -n map_viz python=3.6 pip install jupyter pip install pandas pip install xlrd pip install -U matplotlib pip install folium pip install seaborn pip install plotly pip install pillow conda install basemap conda install basemap-data-hires
이렇게 모듈을 설치했네요ㅠㅠ. 이 내용은 제가 사용하려고 설치한 것이구요. 여러분은 그냥 conda 명령으로 basemap을 설치하시면 됩니다. 마지막 두 줄만 실행하시면 되죠^^
from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt %matplotlib inline plt.figure(figsize=(10,10)) map = Basemap(projection='ortho', lat_0=37.35, lon_0=126.58, resolution='i', area_thresh=1000.0) map.drawcoastlines() map.drawcountries() plt.show()
그리고 시작하는 코드를 올려보겠습니다. 어렵지 않습니다.~^^
ㅎㅎ.. 해안선그리기(drawcoastlines)와, 국경선그리기(drawcountries)를 모두 사용한 결과압니다. 그리고
plt.figure(figsize=(10,10)) map = Basemap(projection='ortho', lat_0=37.35, lon_0=126.58, resolution='i', area_thresh=1000.0) map.drawcoastlines() map.drawcountries() map.fillcontinents(color='coral') plt.show()
이렇게 대륙의 색상을 입력할 수 있습니다
이렇게 결과가 나타납니다.
import numpy as np plt.figure(figsize=(10,10)) map = Basemap(projection='ortho', lat_0=37.35, lon_0=126.58, resolution='i', area_thresh=1000.0) map.drawcoastlines() map.drawcountries() map.fillcontinents(color='coral') map.drawmapboundary() map.drawmeridians(np.arange(0, 360, 30)) map.drawparallels(np.arange(-90, 90, 30)) plt.show()
또 위도 경도선을 그릴 수 있습니다.
앗 그런데.. 혹시나 하고 위도/경도에 대한 개념을 한 번 집고 가면~
출처 : 위키백과 위도/경도 문서
위도(Latitude)는 적도에서 부터 북/남쪽으로 멀어지는 각도, 경도(Longitude)는 영국 그리니치 천문대를 기준으로 좌우로 멀어지는 각도입니다.
plt.figure(figsize=(10,10)) map = Basemap(projection='merc', lat_0=37.35, lon_0=126.58, resolution = 'h', urcrnrlat=44, llcrnrlat=32, llcrnrlon=121.5, urcrnrlon=132.5) map.drawcoastlines() map.drawcountries() map.drawmapboundary() plt.show()
이번에는... 우리나라를 한 번 그려봅니다.^^
plt.figure(figsize=(10,10)) map = Basemap(projection='merc', lat_0=37.35, lon_0=126.58, resolution = 'h', urcrnrlat=44, llcrnrlat=32, llcrnrlon=121.5, urcrnrlon=132.5) map.drawcoastlines() map.drawcountries() map.drawmapboundary() lon = 126.58 lat = 37.35 x,y = map(lon, lat) map.plot(x, y, 'bo', markersize=12) plt.show()
이번에는 마커를 찍어보았습니다.
혹은...
import matplotlib.pyplot as plt import seaborn as sns from matplotlib import font_manager, rc plt.rcParams['axes.unicode_minus'] = False # f_path = "c:/Windows/Fonts/malgun.ttf" # f_path = "/Users/pinkwink/Library/Fonts/D2Coding-Ver1.3-20171129.ttf" f_path = "/Library/Fonts/AppleGothic.ttf" font_name = font_manager.FontProperties(fname=f_path).get_name() rc('font', family=font_name) plt.figure(figsize=(10,10)) map = Basemap(projection='merc', lat_0=37.35, lon_0=126.58, resolution = 'h', urcrnrlat=40, llcrnrlat=32, llcrnrlon=121.5, urcrnrlon=132.5) map.drawcoastlines() map.drawcountries() map.drawmapboundary() lon = [126.97806, 129.07556, 126.70528, 128.60250, 126.95556, 127.38500, 126.85306] lat = [37.56667, 35.17944, 37.45639, 35.87222, 37.39444, 36.35111, 35.15972] x,y = map(lon, lat) map.plot(x, y, 'ro', markersize=5) labels = ['서울', '부산', '인천', '대구', '안양', '대전', '광주'] for label, xpt, ypt in zip(labels, x, y): plt.text(xpt, ypt, label) plt.show()
이렇게 여러개의 마커와 이름을 찍어볼 수 있습니다.
여기까지 오늘은 basemap 간편 테스트였습니다~^^
반응형
'Theory > DataScience' 카테고리의 다른 글
구글 Colab에서 한글 문제 대응하기 (6) | 2019.11.18 |
---|---|
네이버 검색어 트렌드 API를 사용해 보죠.. 그리고 타다~ (16) | 2019.05.08 |
전세계 테러 데이터 분석 (따라하기) (8) | 2019.05.07 |
mahotas를 이용한 유사 이미지 찾기 (15) | 2018.10.24 |
영상 인식으로 월리를 찾아볼까? -mahotas- (16) | 2018.10.18 |
우리나라 지도그리는 모듈 배포 - 인구소멸위기지역, 여성인구비율 등등 (28) | 2018.07.04 |
구글 지도 API 유료화에 대해 학습 방법... (34) | 2018.06.27 |