[streamlit] streamlit 배포
2024. 1. 31. 17:20ㆍ카테고리 없음
streamlit의 기본적인 사용법도 정리를 해야하는데,, 뭔가 순서가 꼬인 느낌,, 그래도 배포하는 방법 자체는 어렵지 않으니 이번에 그린 plotly 그래프를 stramlit에 배포를 해보겠습니다. 먼저 알아야 할 건 streamlit을 배포하면 github에 있는 것을 기준으로 배포가 되기 때문에 현재 진행 상황을 바로바로 업데이트를 할 수 없고, github에 push를 진행해야 적용이 됩니다. 즉, github랑 연동해야한다는 이야기입니다. 그래서 github에 레포지토리를 만들고 clone을 해오겠습니다. 해당 방법은 여기에 정리되어 있습니다.
streamlit은 아래의 코드로 다운 받을 수 있습니다.
pip install streamlit
일단 간단하게 streamlit을 실행시켜 보자면 아래와 같은 test.py를 작성하고 가상환경에 접속된 git bash에 streamlit run test.py를 입력해보겠습니다.
# -*- codin:utf-8 -*-
import streamlit as st
st.title('Hello')
그러면 이런 창이 뜨고 오른쪽 위에 Deploy가 보입니다. 이것이 배포하는건데 test.py같은 경우는 github에 push한것이 아니라서 아마 안 뜰겁니다,, 그리고 plotly 작업했던것이 push한 내용인데 코드는 이렇습니다.
# -*- codin:utf-8 -*-
import streamlit as st
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import plotly.graph_objects as go
import plotly.express as px
def load_data():
df=pd.read_csv('./data/df.csv')
return df
def main():
st.title("My First Deply streamlit & Plotly")
df=load_data()
#st.dataframe(df)
tab1,tab2=st.tabs(['Days of Week','Hour of Day'])
with tab1:
#Frequency of Orders by Days of week
target=df.order_dow.value_counts()
colors=sns.color_palette('hls',len(target.index)).as_hex()
fig=go.Figure()
fig.add_trace(
go.Bar(x=target.index,y=target,
marker={'color':colors,
'line':{'color':'black','width':3},
'pattern':{'shape':'/'}})
)
fig.update_layout(go.Layout(title={'text':'Frequency of Orders by Days of Week',
'font':{'color':'blue','size':30}},
xaxis={'title':{'text':'Days of Week'},
'gridwidth':1,'showgrid':True},
yaxis={'title':{'text':'Frequency'},
'gridwidth':1,'showgrid':True},
))
st.plotly_chart(fig,use_container_width=True)
with tab2:
#Frequency of Orders by Hour of Day
target=df.order_hour_of_day.value_counts()
fig=go.Figure()
fig.add_trace(
go.Bar(x=target.index,y=target,
marker={'color':px.colors.qualitative.Dark24,
'line':{'color':'black','width':3},
'pattern':{'shape':'/'}})
)
fig.update_layout(go.Layout(title={'text':'Frequency of Orders by Hour of Day',
'font':{'color':'blue','size':30}},
xaxis={'title':{'text':'Hour_of_Day'},
'gridwidth':1,'showgrid':True},
yaxis={'title':{'text':'Frequency'},
'gridwidth':1,'showgrid':True},
margin=dict(l=23,r=23,b=23)
))
st.plotly_chart(fig,use_container_width=True)
cols=st.multiselect("select n columns",df.department.unique())
# st.write('selecting columns:',cols)
st.write(cols)
if __name__ == '__main__':
main()
https://ghkstoddashboardfirst.streamlit.app/