📌
### 지도 시각화
# folium 모듈 사용하기
# pip install folium <=콘솔 or Anaconda Prompt에 입력하여 설치.
import folium
seoul_map = folium.Map(location=[37.55,126.98],zoom_start=12)
seoul_map.save("seoul.html") #copy_ex
# 지도의 표현방법 지정 가능
# tiles="stamentoner" : 길에 대한 정보들만 출력.
'''
tiles : 지도 표시되는 형식 설정.
openstreetmap : 기본값
cartodbdark_matter
cartodbpositron
cartodbpositrononlylabels
stamentonerbackground
stamentonerlabels
stamenterrain, Stamen Terrain
stamenwatercolor
stamentoner, Stamen Toner
'''
seoul_map2 = folium.Map(location=[37.55,126.98],zoom_start=12,
tiles="stamentoner")
seoul_map2.save("seoul2.html") # html파일 생성.
📌
# 지도 생성하기
seoul_map = folium.Map(location=[37.55,126.98],zoom_start=12)
'''
반복문 이용 : 마커를 표시하는것이 한두개가 아니니까
# folium.Marker : 지도에 표시하기
# [lat,lng] : 위도, 경도. 마크 위치를 위도경도로 설정.(순서 중요)
# popup=name : 마커를 클릭시 표시되는 내용.
# tooltip=name : 마커 내부에 마우스커서가 들어온 경우 표시되는 내용
# add_to(seoul_map) : seoul_map지도에 추가
# df.index : 대학명
# df.위도, df.경도 : 대학의 위도, 경도 정보
'''
# zip : 목록을 하나씩 연결하여 튜플객체의 리스트로 생성
# zip(리스트1, 리스트2) : 리스트1의 요소한개, 리스트2의 요소 한개를 튜플로 만들어서
# 하나의 리스트로 합쳐주는 함수
for name,lat,lng in zip(df.index, df.위도, df.경도):
# name : 대학명
# lat : 대학의 위도 정보
# lng : 대학의 경도 정보
folium.Marker([lat,lng],popup=name,tooltip=name).add_to(seoul_map)
seoul_map.save("seoul3.html")
##################
# zip 예제
lista = ['a','b','c']
list1 = [1,2,3]
list2 = ['가','나','다']
# 결과 -> ('a', 1, '가') ('b', 2, '나') ('c', 3, '다')
listall = zip(lista, list1, list2)
for d in listall :
print(d)
# 원형 마커 추가하기
# CircleMarker : 마커의 모양을 설정 할 수 있음.
df = pd.read_excel("data/서울지역 대학교 위치.xlsx",index_col=0)
seoul_map = folium.Map(location=[37.55,126.98],zoom_start=12)
for name,lat,lng in zip(df.index, df.위도, df.경도) :
folium.CircleMarker([lat,lng],
popup = name,
tooltip = name,
radius=10, # 반지름의 크기
color='brown', # 원둘레 색상
fill=True, # 원내부 채울지, 비워둘지
fill_color='coral', # 원내부 색상
fill_opacity=0.7 # 원내부의 투명도
).add_to(seoul_map)
seoul_map.save("seoul4.html")
# 마커 내부의 아이콘 설정하기
# icon=['home','flag','bookmark','star']
seoul_map = folium.Map(location=[37.55,126.98],zoom_start=12)
for name, lat, lng in zip(df.index,df.위도,df.경도) :
folium.Marker([lat,lng],
popup=name,
tooltip=name,
icon=folium.Icon(color='red',icon='home')
).add_to(seoul_map)
seoul_map.save("seoul5.html")
❓
# Library.csv 파일을 읽어서 도서관 정보를 지도에 표시하기
#1 파일을 읽어 지도정보(조건명 찾기)
df = pd.read_csv("data/Library.csv")
df.info()
df.head()
# => 필요한 정보 : 경도 위도 시설명?
#2 도서관 명
df.시설명.head()
#3 지도 만들기
library_map = folium.Map(location=[37.55,126.98], zoom_start=12)
for name, lat, lng in zip(df.index,df.위도,df.경도) :
folium.Marker([lat,lng],
popup=name,
tooltip=name,
icon=folium.Icon(color='green',icon='bookmark')
).add_to(library_map)
library_map.save("library1.html") #html 파일 생성.
# 시설 구분별로 색상 설정하기
'''
'''
df = pd.read_csv("data/Library.csv")
df.info()
library_map = folium.Map(location=[37.55,126.98],zoom_start=12)
for name,lat,lng,kbn in zip(df.시설명, df.위도, df.경도,df.시설구분):
if kbn == '구립도서관' or kbn == '국립도서관' :
color = 'green'
elif kbn == '사립도서관' :
color = 'red'
else :
color = 'blue'
folium.Marker([lat,lng],popup=name,tooltip=kbn,
icon=folium.Icon(color=color,icon='bookmark')
).add_to(library_map)
library_map.save("library2.html")
# MarkerCluster 기능 : 지도확대 정도에 따라 마커 표시방법을 달리해준다.
# 그룹화 기능
from folium.plugins import MarkerCluster
library_map = folium.Map(location=[37.55,126.98],zoom_start=12)
mc = MarkerCluster() # MarkerCluster 객체 생성
# DataFrame.iterrows() : 반복문에서 레코드의 인덱스와 레코드값을 리턴
# _ : 인덱스 값. _이름의 변수병 사용한 이유는 인덱스를 사용하지 않기때문에.
# (상징적으로 설정한것일 뿐이다)
# row : 한개의 레코드값
for _, row in df.iterrows() :
mc.add_child( # mc 객체에 추가
# folium.Marker 객체 생성, import했기 때문에 folium 생략 가능.
folium.Marker(location=[row['위도'],row['경도']],
popup=row['시설구분'],
tooltip=row['시설명']))
library_map.add_child(mc) # 클러스터를 지도에 추가
library_map.save("library3.html")
'수업(국비지원) > Python' 카테고리의 다른 글
[Python] numpy 행렬 (0) | 2023.04.25 |
---|---|
[Python] 지도를 이용한 시각화2 (0) | 2023.04.25 |
[Python] 시각화 - seaborn 모듈을 이용한 그래프(distplot,kdeplot,histplot 등) (0) | 2023.04.25 |
[Python] seaborn 모듈 - 시각화 모듈 선형회귀 그래프 (0) | 2023.04.25 |
[Python] matplot 시각화 모듈 - 박스그래프 (0) | 2023.04.25 |