Streamlit share.
streamlit share 사이트.
URL: https://share.streamlit.
프로젝트 명
우리나라의 관광지 분석을 통한 신규 관광객 유입
프로젝트 개요.
- 주제
- 주제 선정이유.
- 우리나라의 코로나19 방역 완화, 엔데믹과 원화 가치 급락 등의 이유로 외국인 관광객의 방한이 많아지고 있다. 우리나라의 관광지 분석을 통해 기존의 사람들이 잘 몰랐었던 숨어있는 관광지를 알려주고, 관광객이 줄어들고 있는 관광지는 새로운 마케팅을 통해 관광객을 끌어들일 수 있는 기회를 만듦.
- b. 장점 & 보완점
- 프로그램.
- 프로그램의 구성도
- 인기 TOP 10을 만들어서 해당 지역 주변의 편의시설 등을 알려주는 것을 만듦
프로젝트 주요 내용 및 기능.
- 관광지역의 관광객들의 유입 분석기능
- 인기 많은 관광지역 주변의 편의시설 및 맛집 추천 기능
- 현재 위치 기반으로 가까운 관광지 추천?
개발 내용.
💡 기준연월 2019.11~2022.10 데이터 날짜 기준
- 서울시 주요 관광지점 입장객 방문 수 분석
[주요관광지점 입장객(2004.07 이후)_221203075929.xls](%25EC%25A3%25BC%25EC%259A%2594%25EA%25B4%2580%25EA%25B4%2591%25EC%25A7%2580%25EC%25A0%2590_%25EC%259E%2585%25EC%259E%25A5%25EA%25B0%259D(2004.07_%25EC%259D%25B4%25ED%259B%2584)_221203075929.xls)
import numpy as np
import pandas as pd
visitors = pd.read_excel('../Users/chohyunjun/Downloads/visitor.xls', thousands=',')
visitors
visitors_total = visitors.loc[visitors['내/외국인'] == '합계']
visitors_total = visitors_total.iloc[:,0:31]
import googlemaps
gmaps_key = "AIzaSyCpqSO-mFH36wjjiqUlQPJHhwYkLE9WWns"
gmaps = googlemaps.Client(key = gmaps_key)
visit_name = []
for name in visitors_total['관광지']:
visit_name.append('서울'+ str(name))
visit_name
visit_address = []
visit_lat = []
visit_lng = []
print(name + '-->' + tmp[0].get("formatted_address"))
visit_lat
visit_lng
visitors_total['lat'] = visit_lat
visitors_total['lng'] = visit_lng
visitors_total1 = pd.pivot_table(visitors_total, index = ['관광지'])
import folium
map = folium.Map(location=[37.5502, 126.982], zoom_start= 11)
for n in visitors_total1.index:
folium.Marker([visitors_total1['lat'][n],
visitors_total1['lng'][n]]).add_to(map)
map

streamlit
import urllib.request
import numpy as np
import pandas as pd
import plotly.express as px
import requests
import streamlit as st
import xmltodict
from pandas import json_normalize
from streamlit_extras.add_vertical_space import add_vertical_space
from streamlit_lottie import st_lottie
import folium
import googlemaps
from streamlit_folium import st_folium
from folium import plugins
from folium.plugins import MarkerCluster
from folium import Map, Popup, Marker, Icon, IFrame
st.set_page_config(page_title="파이썬응용 데이터분석 기말 프로젝트", layout="wide")
row0_spacer1, row0_1, row0_spacer2, row0_2, row0_spacer3 = st.columns(
(0.1, 6, 0.2, 2, 0.1)
)
row0_1.title("파이썬응용 데이터분석 기말 프로젝트.")
with row0_2:
add_vertical_space()
st.markdown("###### 2017E8129 통계데이터과학과 조현준")
def visitor_area():
st.subheader("방문자 거주지 분포.")
st.markdown("###### 방문자 거주지 분포 시각화를 통해 경기도, 인천광역시, 강원도등 순으로 방문객 비율을 보이고 있다.")
visitorArea = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/visitor_area.csv', encoding = 'CP949')
fig3 = px.treemap(visitorArea, path = [px.Constant('대한민국'),'광역지자체명','기초지자체명'], values = '방문자 수(합)',
color = '방문자 수(합)',
color_continuous_scale = 'GnBu')
fig3.update_layout(margin = dict(t=50, l=25, r=25, b=25))
st.plotly_chart(fig3, theme = "streamlit", use_container_width = True)
def visitor_seoul():
line1_spacer1, line1_1, line1_spacer2 = st.columns((0.1, 3.2, 0.1))
with line1_1:
st.header("Analysis of Seoul Data.")
st.markdown("###### 서울은 대한민국의 수도이자 많은 관광객들이 몰려 있는 곳이다. 한국을 찾는 많은 관광객들이 주로 서울을 방문하는 경우들이 많다. 서울관광지 Top10 데이터를 분석하여 관광지를 추천해주고자 한다.")
row3_space1, row3_1, row3_space2, row3_2, row3_space3 = st.columns(
(0.1, 1, 0.1, 1, 0.1)
)
with row3_1:
st.subheader("서울 방문자 수")
st.markdown("###### 코로나19 유행 기간 서울 방문자 수가 급격히 줄어 들었지만, 거리두기가 풀린 뒤 서울 방문객들이 점차 증가하는 추세를 보이고 있다.")
visitorData = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/visitorData_seoul.csv', encoding='CP949')
visitorData.columns = ["기준연월","지역명","방문자 수"]
fig = px.line(
visitorData,
x = '기준연월',
y = '방문자 수',
color_discrete_sequence = ["lightgoldenrodyellow"]
)
st.plotly_chart(fig, theme = "streamlit", use_container_width = True)
with row3_2:
visitor_area()
visitor_seoul()
def inflow_ouflow_chart():
row4_spacer1, row4_1, row4_spacer2 = st.columns((0.1, 5, 0.1))
with row4_1:
st.subheader("유입 유출 분석")
st.markdown("###### 서울의 유입 유출 방문객의 분석을 통해 첫 번째로 많이 나타는 경기도 유입은 86.9% ,유출은 85.5%, 두 번째는 인천광역시 유입9.9% ,유출8.2%, 세 번째는 강원도 유입1.1% ,유출3.7%를 나타내고 있음.")
flowData = pd.read_csv("https://raw.githubusercontent.com/CHJun47/Data/main/inflow_outflow.csv", encoding = 'CP949')
fig1 = px.parallel_categories(
flowData,
color = "유입 비율",
color_continuous_scale = "GnBu"
)
st.plotly_chart(fig1, theme = "streamlit", use_container_width = True)
inflow_ouflow_chart()
def touristDest():
row5_space1, row5_1, row5_space2, row5_2, row5_space3 = st.columns(
(0.1, 1, 0.1, 1, 0.1)
)
with row5_1:
st.subheader("관광소비 유형.")
st.markdown("###### 관광소비 유형으로 1위가 식음료이다. 음식은 그 나라의 문화와 전통을 가장 잘 나타낼 수 있는 관광 자원이다.")
st.markdown("###### 한 지역을 대표하는 음식은 때로는 그 자체만으로도 여행의 목적이 되기도 한다.")
st.markdown("###### 2위로 쇼핑업을 볼 수 있다. 유행하는 옷이나 우리나라를 대표하는 한복을 입고 문화를 즐기고 향유하려는 것을 볼 수 있다.")
st.markdown("###### 나머지는 운송업, 숙박업, 여가서비스등을 볼 수 있다.")
tourrist_dest = pd.read_csv("https://raw.githubusercontent.com/CHJun47/Data/main/tourrist_dest.csv", encoding='CP949')
fig4 = px.treemap(tourrist_dest, path = [px.Constant('점포'),'업종대분류명','업종중분류명'], values = '중분류 소비액(합)',
color = '중분류 소비액(합)',
color_continuous_scale = "GnBu")
fig4.update_layout(margin = dict(t=50, l=25, r=25, b=25))
st.plotly_chart(fig4, theme = "streamlit", use_container_width = True)
with row5_2:
st.subheader("SNS언급량.")
st.markdown("###### 코로나19 거리두기로 여행이나 놀러갈 수 없는 상황이였지만,")
st.markdown("###### 거리두기가 풀리고 나서부터 SNS에서도 여행, 놀러가는 사진을 SNS에서의 언급량이 점점 증가하고있다.")
st.markdown("###### ")
seoul_SNS = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/seoul_SNS.csv', encoding = 'CP949')
fig5 = px.bar(
seoul_SNS,
x = '기준연월',
y = '검색량(건)',
color_discrete_sequence = ["lightgoldenrodyellow"]
)
st.plotly_chart(fig5, theme = "streamlit", use_container_width = True)
touristDest()
def Folium_visit():
row6_spacer1, row6_1, row6_spacer2, row6_2, row_spacer3 = st.columns((0.1, 30, 0.1,5,0.1))
with row6_1:
gmaps_key = "AIzaSyCpqSO-mFH36wjjiqUlQPJHhwYkLE9WWns"
gmaps = googlemaps.Client(key = gmaps_key)
visitors = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/visitor(2).csv', encoding='CP949')
visitors_total = visitors.loc[visitors['내/외국인'] == '합계']
visitors_total = visitors_total.iloc[:,0:31]
visit_name = []
visit_url = []
for name in visitors.iloc[:,-1]:
visit_url.append(name)
for name in visitors_total['관광지']:
visit_name.append('서울'+ str(name))
visit_address = []
visit_lat = []
visit_lng = []
for name in visit_name:
tmp = gmaps.geocode(name, language='ko')
tmp_loc = tmp[0].get("geometry")
visit_lat.append(tmp_loc['location']['lat'])
visit_lng.append(tmp_loc['location']['lng'])
# food.
food = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/food(1).csv')
food_address = []
food_lat = []
food_lng = []
food_name = []
food_info = []
food1_info = []
food2_info = []
food3_info = []
food4_info = []
food5_info = []
food6_info = []
food1_name = []
food2_name = []
food3_name = []
food4_name = []
food5_name = []
food6_name = []
for name in food.iloc[:,1]:
food_name.append(name)
for add in food.iloc[:,2]:
food_address.append(str('서울')+add)
for name in food_address:
tmp = gmaps.geocode(name, language='ko')
tmp_loc = tmp[0].get("geometry")
food_lat.append((tmp_loc['location']['lat']))
food_lng.append(tmp_loc['location']['lng'])
food['lat'] = food_lat
food['lng'] = food_lng
food1 = food[food['분류'] == '음식점기타']
for name in food1.iloc[:,5]:
food1_info.append(name)
food2 = food[food['분류'] == '한식']
for name in food2.iloc[:,5]:
food2_info.append(name)
food3 = food[food['분류'] == '카페/찻집']
for name in food3.iloc[:,5]:
food3_info.append(name)
food4 = food[food['분류'] == '간이음식']
for name in food4.iloc[:,5]:
food4_info.append(name)
food5 = food[food['분류'] == '전문음식']
for name in food5.iloc[:,5]:
food5_info.append(name)
food6 = food[food['분류'] == '외국식']
for name in food6.iloc[:,5]:
food6_info.append(name)
for name in food1.iloc[:,1]:
food1_name.append(name)
for name in food2.iloc[:,1]:
food2_name.append(name)
for name in food3.iloc[:,1]:
food3_name.append(name)
for name in food4.iloc[:,1]:
food4_name.append(name)
for name in food5.iloc[:,1]:
food5_name.append(name)
for name in food6.iloc[:,1]:
food6_name.append(name)
food1 = pd.pivot_table(food1, index = ['주소'])
food2 = pd.pivot_table(food2, index = ['주소'])
food3 = pd.pivot_table(food3, index = ['주소'])
food4 = pd.pivot_table(food4, index = ['주소'])
food5 = pd.pivot_table(food5, index = ['주소'])
food6 = pd.pivot_table(food6, index = ['주소'])
visitors_total['lat'] = visit_lat
visitors_total['lng'] = visit_lng
visitors_total1 = pd.pivot_table(visitors_total, index = ['관광지'])
map = folium.Map(location=[37.566535, 126.9779692],
tiles = "stamen Terrain",
zoom_start= 11)
marker_cluster = MarkerCluster().add_to(map)
######################### 수정.
if st.checkbox('관광지'):
for n in range(int(len(visitors_total1))):
folium.Marker([visitors_total1['lat'][n],
visitors_total1['lng'][n]],tooltip = '"'+visit_name[n]+'"').add_to(marker_cluster)
elif st.checkbox('음식점기타'):
for n1 in range(int(len(food1))):
folium.Marker([food1['lat'][n1],
food1['lng'][n1]],popup = "<a href="+'"'+food1_info[n1]+'"'+"target ="+"_blank"+">Site</a>",tooltip = '"'+food1_name[n1]+'"',icon = folium.Icon(icon = 'star', color = 'red')).add_to(marker_cluster)
elif st.checkbox('한식'):
for n2 in range(int(len(food2))):
folium.Marker([food2['lat'][n2],
food2['lng'][n2]],popup = "<a href="+'"'+food2_info[n2]+'"'+"target ="+"_blank"+">Site</a>",tooltip = '"'+food2_name[n2]+'"',icon = folium.Icon(icon = 'star', color = 'yellow')).add_to(marker_cluster)
elif st.checkbox('카페/찻집'):
for n3 in range(int(len(food3))):
folium.Marker([food3['lat'][n3],
food3['lng'][n3]],popup = "<a href="+'"'+food3_info[n3]+'"'+"target ="+"_blank"+">Site</a>",tooltip = '"'+food3_name[n3]+'"',icon = folium.Icon(icon = 'star', color = 'green')).add_to(marker_cluster)
elif st.checkbox('간이음식'):
for n4 in range(int(len(food4))):
folium.Marker([food4['lat'][n4],
food4['lng'][n4]],popup = "<a href="+'"'+food4_info[n4]+'"'+"target ="+"_blank"+">Site</a>",tooltip = '"'+food4_name[n4]+'"',icon = folium.Icon(icon = 'star', color = 'orange')).add_to(marker_cluster)
elif st.checkbox('전문음식'):
for n5 in range(int(len(food5))):
folium.Marker([food5['lat'][n5],
food5['lng'][n5]],popup = "<a href="+'"'+food5_info[n5]+'"'+"target ="+"_blank"+">Site</a>",tooltip = '"'+food5_name[n5]+'"',icon = folium.Icon(icon = 'star', color = 'lightgray')).add_to(marker_cluster)
elif st.checkbox('외국식'):
for n6 in range(int(len(food6))):
folium.Marker([food6['lat'][n6],
food6['lng'][n6]],popup = "<a href="+'"'+food6_info[n6]+'"'+"target ="+"_blank"+">Site</a>",tooltip = '"'+food6_name[n6]+'"',icon = folium.Icon(icon = 'star', color = 'lightcyan')).add_to(marker_cluster)
return map
st.subheader("주변 Search 지도.")
m = Folium_visit()
output = st_folium(m, key = "map", width = 1800, height = 600)
folium
import folium
m=folium.Map(location=[37.55092, 127.0377],zoom_start=11)
m.add_child(folium.LatLngPopup())
#Tpo10 우리나라 관광지추천
#경복궁iframe으로 사진 띄우기-사진 경로지정해야함
pic1 = base64.b64encode(open('C:/Users/김나영/Desktop/Gbg.jpg','rb').read()).decode()
image_tag1 = '<img src="data:image/jpeg;base64,{}">'.format(pic1)
iframe1 = folium.IFrame(image_tag1, width=500, height=500)
popup1 = folium.Popup(iframe1, max_width=650)
# 1.경복궁
folium.Marker([37.579617, 126.977041], # 마커 찍고싶은 좌표를 구해와서 원본 m에다 표시/추가
popup=popup1, # popup: 마커 클릭시 팝업으로 상세내용 표시되는 옵션 추가
tooltip='<i>경복궁</i>').add_to(m)# tooltip: 마우스오버시 상세내용 표시
#창경궁iframe으로 사진 띄우기
pic2 = base64.b64encode(open('C:/Users/김나영/Desktop/Cgg.jpg','rb').read()).decode()
image_tag2 = '<img src="data:image/jpeg;base64,{}">'.format(pic2)
iframe2 = folium.IFrame(image_tag2, width=500, height=500)
popup2 = folium.Popup(iframe2, max_width=650)
# 2.창경궁
folium.Marker([37.5787708, 126.9948698],
popup=popup2,
tooltip='<i>창경궁</i>').add_to(m)
#창덕궁iframe으로 사진 띄우기
pic3 = base64.b64encode(open('C:/Users/김나영/Desktop/Cdg.jpg','rb').read()).decode()
image_tag3 = '<img src="data:image/jpeg;base64,{}">'.format(pic3)
iframe3 = folium.IFrame(image_tag3, width=500, height=500)
popup3 = folium.Popup(iframe3, max_width=650)
# 3.창덕궁
folium.Marker([37.5794309, 126.9910426],
popup=popup3,
tooltip='<i>창덕궁</i>').add_to(m)
#덕수궁iframe으로 사진 띄우기
pic4 = base64.b64encode(open('C:/Users/김나영/Desktop/Dsg.jpg','rb').read()).decode()
image_tag4 = '<img src="data:image/jpeg;base64,{}">'.format(pic4)
iframe4 = folium.IFrame(image_tag4, width=500, height=500)
popup4 = folium.Popup(iframe4, max_width=650)
#4.덕수궁
folium.Marker([37.5658049, 126.9751461],
popup=popup4,
tooltip='<i>덕수궁</i>').add_to(m)
#경희궁iframe으로 사진 띄우기
pic5 = base64.b64encode(open('C:/Users/김나영/Desktop/Ghg.jpg','rb').read()).decode()
image_tag5 = '<img src="data:image/jpeg;base64,{}">'.format(pic5)
iframe5 = folium.IFrame(image_tag5, width=500, height=500)
popup5 = folium.Popup(iframe5, max_width=650)
#5.경희궁
folium.Marker([37.5712378, 126.9681688],
popup=popup5,
tooltip='<i>경희궁</i>').add_to(m)
#세종대왕기념관iframe으로 사진 띄우기
pic6 = base64.b64encode(open('C:/Users/김나영/Desktop/King.jpg','rb').read()).decode()
image_tag6 = '<img src="data:image/jpeg;base64,{}">'.format(pic6)
iframe6 = folium.IFrame(image_tag6, width=500, height=500)
popup6 = folium.Popup(iframe6, max_width=650)
#6.세종대왕기념관
folium.Marker([37.590783, 127.0435458],
popup=popup6,
tooltip='<i>세종대왕기념관</i>').add_to(m)
#서울스카이iframe으로 사진 띄우기
pic7 = base64.b64encode(open('C:/Users/김나영/Desktop/Sky.png','rb').read()).decode()
image_tag7 = '<img src="data:image/jpeg;base64,{}">'.format(pic7)
iframe7 = folium.IFrame(image_tag7, width=500, height=500)
popup7 = folium.Popup(iframe7, max_width=650)
#7.서울스카이
folium.Marker([37.5136918, 127.1037211],
popup=popup7,
tooltip='<i>남산타워</i>').add_to(m)
#롯데월드iframe으로 사진 띄우기
pic8 = base64.b64encode(open('C:/Users/김나영/Desktop/Lotte.jpg','rb').read()).decode()
image_tag8 = '<img src="data:image/jpeg;base64,{}">'.format(pic8)
iframe8 = folium.IFrame(image_tag8, width=500, height=500)
popup8 = folium.Popup(iframe8, max_width=650)
#8.롯데월드
folium.Marker([37.5111158, 127.098167],
popup=popup8,
tooltip='<i>롯데월드</i>').add_to(m)
#서울시립미술관iframe으로 사진 띄우기
pic9 = base64.b64encode(open('C:/Users/김나영/Desktop/SMA.jpg','rb').read()).decode()
image_tag9 = '<img src="data:image/jpeg;base64,{}">'.format(pic9)
iframe9 = folium.IFrame(image_tag9, width=500, height=500)
popup9 = folium.Popup(iframe9, max_width=650)
#9.서울시립미술관
folium.Marker([37.5640625, 126.9738125],
popup=popup9,
tooltip='<i>서울시립미술관</i>').add_to(m)
#국립중앙박물관iframe으로 사진 띄우기
pic10 = base64.b64encode(open('C:/Users/김나영/Desktop/NMK.jpg','rb').read()).decode()
image_tag10 = '<img src="data:image/jpeg;base64,{}">'.format(pic10)
iframe10 = folium.IFrame(image_tag10, width=500, height=500)
popup10 = folium.Popup(iframe10, max_width=650)
#10.국립중앙박물관
folium.Marker([37.5238506, 126.9804702],
popup=popup10,
tooltip='<i>국립중앙박물관</i>').add_to(m
streamlit →folium지도
import urllib.request
import numpy as np
import pandas as pd
import plotly.express as px
import requests
import streamlit as st
from streamlit_folium import st_folium
from folium.plugins import MarkerCluster
import folium
import xmltodict
import base64
from pandas import json_normalize
from streamlit_extras.add_vertical_space import add_vertical_space
from streamlit_lottie import st_lottie
st.set_page_config(page_title="파이썬응용 데이터분석 기말 프로젝트", layout="wide")
row0_spacer1, row0_1, row0_spacer2, row0_2, row0_spacer3 = st.columns(
(0.1, 6, 0.2, 2, 0.1)
)
row0_1.title("파이썬응용 데이터분석 기말 프로젝트.")
with row0_2:
add_vertical_space()
st.markdown("###### 2017E8129 통계데이터과학과 조현준")
def visitor_area():
st.subheader("방문자 거주지 분포.")
visitorArea = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/visitor_area.csv', encoding = 'CP949')
fig3 = px.treemap(visitorArea, path = [px.Constant('대한민국'),'광역지자체명','기초지자체명'], values = '방문자 수(합)',
color = '방문자 수(합)',
color_continuous_scale = 'GnBu')
fig3.update_layout(margin = dict(t=50, l=25, r=25, b=25))
st.plotly_chart(fig3, theme = "streamlit", use_container_width = True)
def visitor_seoul():
line1_spacer1, line1_1, line1_spacer2 = st.columns((0.1, 3.2, 0.1))
with line1_1:
st.header("Analysis of Seoul Data.")
row3_space1, row3_1, row3_space2, row3_2, row3_space3 = st.columns(
(0.1, 1, 0.1, 1, 0.1)
)
with row3_1:
st.subheader("서울 방문자 수")
visitorData = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/visitorData_seoul.csv', encoding='CP949')
visitorData.columns = ["기준연월","지역명","방문자 수"]
fig = px.line(
visitorData,
x = '기준연월',
y = '방문자 수',
color_discrete_sequence = ["lightgoldenrodyellow"]
)
st.plotly_chart(fig, theme = "streamlit", use_container_width = True)
with row3_2:
visitor_area()
visitor_seoul()
def inflow_ouflow_chart():
row4_spacer1, row4_1, row4_spacer2 = st.columns((0.1, 5, 0.1))
with row4_1:
st.subheader("유입 유출 분석")
flowData = pd.read_csv("https://raw.githubusercontent.com/CHJun47/Data/main/inflow_outflow.csv", encoding = 'CP949')
fig1 = px.parallel_categories(
flowData,
color = "유입 비율",
color_continuous_scale = "GnBu"
)
st.plotly_chart(fig1, theme = "streamlit", use_container_width = True)
inflow_ouflow_chart()
def touristDest():
row5_space1, row5_1, row5_space2, row5_2, row5_space3 = st.columns(
(0.1, 1, 0.1, 1, 0.1)
)
with row5_1:
st.subheader("관광소비 유형.")
tourrist_dest = pd.read_csv("https://raw.githubusercontent.com/CHJun47/Data/main/tourrist_dest.csv", encoding='CP949')
fig4 = px.treemap(tourrist_dest, path = [px.Constant('점포'),'업종대분류명','업종중분류명'], values = '중분류 소비액(합)',
color = '중분류 소비액(합)',
color_continuous_scale = "GnBu")
fig4.update_layout(margin = dict(t=50, l=25, r=25, b=25))
st.plotly_chart(fig4, theme = "streamlit", use_container_width = True)
with row5_2:
st.subheader("SNS언급량.")
seoul_SNS = pd.read_csv('https://raw.githubusercontent.com/CHJun47/Data/main/seoul_SNS.csv', encoding = 'CP949')
fig5 = px.bar(
seoul_SNS,
x = '기준연월',
y = '검색량(건)',
color_discrete_sequence = ["lightgoldenrodyellow"]
)
st.plotly_chart(fig5, theme = "streamlit", use_container_width = True)
touristDest()
def draw_folium_map():
center = [39.5, -98.5]
tiles = ["cartodbpositron", "Stamen Toner", "OpenStreetMap"]
map = folium.Map(
location=[center[0], center[1]],
zoom_start=10,
zoom_control=True,
scrollWheelZoom=False,
tiles=tiles[0],
)
folium.Marker(
location=[39.5, -98.5],
popup=f"A location!",
icon=folium.Icon(color="blue", icon="star"),
).add_to(map)
return map
m = draw_folium_map()
output = st_folium(m, key="map", width=650, height=600)
st.write(output)
CircleMarker — popup
import pandas as pd
import folium
from folium.plugins import FastMarkerCluster
file_url = 'http://www2.census.gov/geo/docs/maps-data/data/gazetteer/2016_Gazetteer/2016_Gaz_zcta_national.zip'
#Pandas usually infers zips are numerics, but we lose our leading zeroes so let's go with the object dtype
df = pd.read_csv(file_url, sep='\t', dtype={'GEOID' : object})
df.columns = df.columns.str.strip() #some column names have some padding
df = df.sample(1000)
folium_map = folium.Map(location=[38, -97],
zoom_start=4.4,
tiles='CartoDB dark_matter')
# These two lines should create FastMarkerClusters
FastMarkerCluster(data=list(zip(df['INTPTLAT'].values, df['INTPTLONG'].values))).add_to(folium_map)
folium.LayerControl().add_to(folium_map)
for index, row in df.iterrows():
# generate the popup message that is shown on click.
popup_text = "{}<br> ALAND: {:,}<br> AWATER: {:,}"
popup_text = popup_text.format(
index,
row["ALAND_SQMI"],
row["AWATER_SQMI"]
)
folium.CircleMarker(location=(row["INTPTLAT"],
row["INTPTLONG"]),
radius= row['ALAND_SQMI']/100,
color="#007849",
popup=popup_text,
fill=False).add_to(folium_map)
folium_map


댓글 남기기