본문 바로가기
python

streamlit 꾸미기를 해보자 - seaborn X matplotlib 활용편

by 포 키 2023. 7. 28.
728x90

이번 글을 시작하기에 앞서 데이터 분석을 다루고자 하는 사람들이라면, 이미 데이터 분석을 업으로 삼고있다면 꼭 알고 있고 알아야 하는 pega 박사님의 블로그를 참고해보라는 말을 하고싶다.

나 역시 깊이가 다른 글과 담겨있던 내용을 예제삼아 공부하면 좋을 것 같아 기록하는 김에 소개한다.

https://jehyunlee.github.io/

 

Pega Devlog

Pega's Development log for myself and others

jehyunlee.github.io

 

 

1. seaborn

seaborn 을 활용할 때, matplotlib에서 사용한 객체 지향 문법을 그대로 가져와서 활용할 것이다.

이것이 가능한 이유는 seaborn이 matplotlib 안에 들어있기 때문이다.

그래서 주된 것은 seaborn을 사용하는 것이 좋고 세부적인 사항은 수정을 하지 못하므로 matplotlib 에서 조정해야한다.

fig1으로 둔 이유는 matplotlib에서 사용한 그래프와 헷갈리지 말라고 해두었다. 굳이 숫자를 붙이지 않아도 된다!

 

 

##seaborn
    m_tips = tips.loc[tips['sex'] == 'Male', :]
    f_tips = tips.loc[tips['sex'] == 'Female', :]
    fig1, ax = plt.subplots(ncols=2, figsize=(10, 6), sharex=True, sharey=True)
    sns.scatterplot(data = m_tips, x = 'total_bill', y = 'tip', hue = 'smoker', ax = ax[0])
    ax[0].set_title('Male')
    ax[0].set_xlabel('Total_Bill')

    fig1.supxlabel('Total Bill($)')
    fig1.supylabel('Tip($)')

    st.pyplot(fig1)

 

 

우리가 남성에 대한 부분만 ax[0] 에 작성했기 때문에 ax[1] 에 여성에 관련한 부분을 따로 작성해보는 시간을 가져보면서 복습을 해보는 것을 추천한다.

 

2. plotly

plotly는 자료를 찾기 힘들고 그 중에서도 원서로 된 자료들의 비중이 높다보니 찾아서 공부하는데 조금 버겁다는 것은 사실이다.

이러한 이유로 데이터 분석가들은 사용하기를 꺼려하는 것도 있다.

(개발자라면 streamlit보다는 Django를 많이 사용하는 것과 같은 맥락이다.)

아래에 plotly 공부하는데 필수로 참고해야할 공식 문서를 첨부해두겠다.

https://plotly.com/python/

 

Plotly

Plotly's

plotly.com

 

 

연습용 코드에서는 subtitle을 작성하는 곳이 달라졌고, 이 때까지는 x축을 공유하려면 sharex로 표현했지만, plotly는 shared_xaxes 라고 표현하는 부분이 눈에 먼저 들어온다.

 

 

# plotly
    fig = make_subplots(rows = 1,
                        cols = 2,
                        subplot_titles=('Male', 'Female'),
                        shared_yaxes=True,
                        shared_xaxes=True,
                        x_title='Total Bill($)'
                        )
    fig.add_trace(go.Scatter(x = m_tips['total_bill'], y = m_tips['tip'], mode='markers'), row=1, col=1)
    fig.add_trace(go.Scatter(x = f_tips['total_bill'], y = f_tips['tip'], mode='markers'), row=1, col=2)
    fig.update_yaxes(title_text="Tip($)", row=1, col=1)
    fig.update_xaxes(range=[0, 60])
    fig.update_layout(showlegend=False)

    # Display visualization
    st.plotly_chart(fig, use_container_width=True)

 

여기서 그래프의 배경이 확연히 달라진 것을 알 수 있다.

plotly의 장점은 내가 원하는 구간의 줌인이 되어 그 부분만 상세하게 볼 수 있다는 것이다.

그래프 원하는 지점에 마우스를 올려두면 십자모양이 생기는데 이를 드래그하면 원하는 구간만을 활용할 수 있다.

 

 

728x90