DataScience/Streamlit

Streamlit 여러 차트 그리는 방법들(seaborn,matplotlib,plotly,altair)

leopard4 2022. 12. 13. 13:20

예시1
예시2

 

import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

def main() :
    st.title('차트 그리기 1')

    df = pd.read_csv('streamlit_data/iris.csv')

    st.dataframe( df.head() )

    # sepal_length 와 sepal_width 의 관계를 차트로 그리시오.
    fig = plt.figure()
    plt.scatter(data=df, x='sepal_length', y='sepal_width')
    plt.title('Sepal Length Vs Width')
    plt.xlabel('sepal length')
    plt.ylabel('sepla width')
    st.pyplot(fig)

    fig2 = plt.figure()
    sb.regplot(data=df, x='sepal_length', y='sepal_width')
    st.pyplot(fig2)

    # 히스토그램
    # petal_length 로 히스토그램 그리기

    fig3 = plt.figure()
    plt.hist(data=df, x= 'petal_length', bins=10, rwidth=0.8)
    st.pyplot(fig3)

    fig4 = plt.figure(figsize= (10,4))
    plt.subplot(1, 2, 1)
    plt.hist(data=df, x= 'petal_length', bins=10, rwidth=0.8)

    plt.subplot(1, 2, 2)
    plt.hist(data=df, x= 'petal_length', bins=10, rwidth=0.8)
    st.pyplot(fig4)

    ### 우리가 주피터 노트북에서 그렸던,
    ### plt 차트나 sb 차트는 
    ### 스트림릿에서 표시하려면, 
    ### plt.figure()로 먼저 영역을 잡아주고.
    ### st.pyplot() 함수로 웹화면에 그려준다.

    ### 그리고, 데이터프레임의 내장 차트도, 마찬가지로 해준다.

    # df 의 species 컬럼의 각 종별로 몇개의 데이터가 있는지
    # 차트로 나타내시오.
    fig5 = plt.figure()
    df['species'].value_counts().plot(kind = 'bar')
    st.pyplot(fig5)

    fig6 = plt.figure()
    df['petal_length'].hist()
    st.pyplot(fig6)

if __name__ == '__main__' :
    main()

----------------------------------------------

import streamlit as st
import numpy as np
import pandas as pd 

# plotly 라이브러리
import plotly.express as px

# altair 라이브러리
import altair as alt

def main():
    df = pd.read_csv('streamlit_data/lang_data.csv')
    
    st.dataframe(df.head())
    
    column_menu = df.columns[1:]

    choice_list = st.multiselect('프로그래밍 언어를 선택하세요', column_menu)

    if len(choice_list) != 0 :
        # 유저가 선택한 언어만, 차트를 그린다.
        df_selected = df[choice_list]
        
        ## 스트림릿에서 제공하는 라인차트
        st.line_chart(df_selected)

        ## 스트림릿에서 제공하는 영역차트
        st.area_chart(df_selected)    

        ## 스트림릿에서 제공하는 바차트
        st.bar_chart(df_selected)

    df2 = pd.read_csv('streamlit_data/iris.csv')

    ### altair 라이브러리의 mark_cicle 함수 사용법
    chart = alt.Chart(df2).mark_circle().encode(
        x='petal_length', 
        y='petal_width',
        color = 'species'
    )
    st.altair_chart(chart)

    ### 위치 정보를 지도에 표시하는 방법
    ### 스트림릿의 map 차트
    
    df3 = pd.read_csv('streamlit_data/location.csv', index_col=0)
    st.dataframe(df3.head())

    st.map(df3)

if __name__ == '__main__' :
    main()

plotly파이차트 좋다

 

plotly bar chart

 ### plotly 의 pie 차트 그리는 방법
    df4 = pd.read_csv('streamlit_data/prog_languages_data.csv', index_col=0)
    st.dataframe(df4.head(3))
    
    
    fig6 = px.pie(df4, 'lang','Sum',title='각 언어별 파이차트')
    st.plotly_chart(fig6)

    ### plotly 의 bar 차트 그리는 방법
    df4_sorted = df4.sort_values('Sum',ascending=False)
    fig7 = px.bar(df4_sorted , x='lang',y='Sum')
    st.plotly_chart(fig7)