[streamlit] streamlit 배포

2024. 1. 31. 17:20카테고리 없음

streamlit의 기본적인 사용법도 정리를 해야하는데,, 뭔가 순서가 꼬인 느낌,, 그래도 배포하는 방법 자체는 어렵지 않으니 이번에 그린 plotly 그래프를 stramlit에 배포를 해보겠습니다. 먼저 알아야 할 건 streamlit을 배포하면 github에 있는 것을 기준으로 배포가 되기 때문에 현재 진행 상황을 바로바로 업데이트를 할 수 없고, github에 push를 진행해야 적용이 됩니다. 즉, github랑 연동해야한다는 이야기입니다. 그래서 github에 레포지토리를 만들고 clone을 해오겠습니다. 해당 방법은 여기에 정리되어 있습니다.

https://hwdata.tistory.com/21

 

[Linux] github에 Linux 명령어 기반으로 작업하기

저번글에서 다뤘던 Linux 기본 명령어와 함께 github에 작업한 파일들을 명령어 기반으로 처리하는 방법에 대해 정리해볼까합니다. 우선 연습할 repository를 하나 github에서 만들도록 하겠습니다. test

hwdata.tistory.com

 

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/

 

app

This app was built in Streamlit! Check it out and visit https://streamlit.io for more awesome community apps. 🎈

ghkstoddashboardfirst.streamlit.app