Streamlit - 웹 대시보드에서 그래프 그리기

반응형

이 글은 Python언어와 Visual Studio Code, GitHub Desktop을 기반으로 작성되었습니다.


# 웹 대시보드에서 그래프 그리기

그래프를 생성하려면 파이썬 기반이기 때문에 matplotlib/seaborn 라이브러리도 사용가능합니다.이번 글에서는 streamlit을 사용하여 웹 대시보드에서 그래프를 어떻게 그리는지에 대해 알아보는게 목적이라서matplotlib 라이브러리에 대한 자세한 설명은 아래의 글을 참고합시다!

 

그래프 그리는 라이브러리  알고가기 : https://luvris2.tistory.com/33

 

Matplotlib 활용 - 표, 그래프 만들기(통계/원형/히스토그램/산점도/회귀/상관관계/열분포도)

# Tidy Data란? 데이터를 분석하기 위해 깔끔하게 정리된 데이터(=깔끔한 데이터, Tidy Data) 깔끔한 데이터(Tidy Data)로 가공되기 전에는 지저분한 데이터라고 분류 # Tidy Data의 특징 각 변수는 개별의

luvris2.tistory.com


# Streamlit 자체 제공 그래프 그리기

사용에 필요한 라이브러리 호출

import streamlit as st
import pandas as pd

그래프에 사용될 데이터프레임

각 프로그래밍 언어별 선호도 데이터를 담은 데이터프레임(df)데이터의 값을 떠나서 그래프가 어떤 모양인지를 중점으로 봅시다.


선으로 표현된 그래프 그리기 (line_chart)

  • .line_chart(데이터) : 그래프를 꺾은 선으로 시각화

 

  • 예시) 각 프로그래밍 언어별 선호도 시각화하기
  • 소스 코드
st.line_chart(df)

 

  • 실행 화면


영역으로 표현된 그래프 그리기 (area_chart)

  • .area_chart(데이터) : 그래프를 범위형으로 시각화
  • 겹칠 수 있어서 때에 따라 보기 불편 할 수 있음

 

  • 예시) 각 프로그래밍 언어별 선호도 시각화하기
  • 소스 코드
st.area_chart(df)

 

  • 실행 화면


막대으로 표현된 그래프 그리기 (bar_chart)

  • .bar_chart(데이터) : 그래프를 막대로 시각화
  • area_chart는 겹쳐서 범위를 표현하지만, bar_chart는 각각의 크기를 높이로 표현

 

  • 예시) 각 프로그래밍 언어별 선호도 시각화하기
  • 소스 코드
st.bar_chart(df)

 

  • 실행 화면


지도로 표현된 맵 그래프 그리기 (map)

  • .map(데이터) : 경도와 위도를 이용하여 지도의 해당 부분을 표시
  • 여러개의 위치 정보를 시각화해줌으로써 밀집도를 확인하기에 용이

 

  • 예시) 경도와 위도가 있는 데이터프레임을 맵 그래프로 시각화하기
    • 경도와 위도가 나열되어 있는 데이터프레임

 

  • 소스 코드
st.map(df)

 

  • 실행 화면


# altair 라이브러리를 이용하여 그래프 그리기

웹에서만 사용 가능한 라이브러리streamlit을 이용하여 만든 웹 대시보드에 altair 라이브러리로 시각화합니다.


사용에 필요한 라이브러리 호출

import altair as alt

그래프에 사용될 데이터프레임

각 꽃마다의 크기를 데이터로 담은 데이터프레임(df)

데이터의 값을 떠나서 그래프가 어떤 모양인지를 중점으로 봅시다.


점으로 표현된 그래프 그리기 (mark_circle)

  • .Chart(데이터) .mark_circle() .encode( x = x축데이터 , y = y축데이터, color = 그룹별 색상)
  • streamlit.altair_chart(데이터)
    • 스트림릿을 이용하여 altair로 생성된 데이터만 사용 할 수 있다.

 

  • 예시) 각 꽃들의 크기를 종류별로 표시해보기
  • 소스 코드
alt_chart = alt.Chart(df).mark_circle().encode(x='petal_length',y='petal_width',color='species')
st.altair_chart(alt_chart)

 

  • 실행 화면


# plotly 라이브러리를 이용하여 그래프 그리기

matplotlib과 같은 시각화 라이브러리, 설치하여야 합니다.


plotly 설치

  • 아나콘다 프롬프트를 관리자 권한으로 실행하여 아래의 코드 입력
conda install -c plotly plotly=5.8.0

plotly 호출

import plotly.express as px

그래프에 사용될 데이터프레임

각 프로그래밍 언어마다 선호도를 데이터로 담은 데이터프레임(df)

데이터의 값을 떠나서 그래프가 어떤 모양인지를 중점으로 봅시다.


비율이 표시된 원형 그래프 그리기 (pie)

  • .pie(데이터, names='인덱스', values='값', title= '그래프에 표시될 제목')
  • streamlit.plotly_chart(데이터)
    • 스트림릿을 활용하여 plotly로 생성된 데이터만 사용 할 수 있다.

 

  • 예시) 각 프로그래밍 언어별 선호도의 합을 원형 그래프로 표시하기
  • 소스 코드

 

fig = plotly.pie(df, names='lang', values='Sum', title='각 언어별 파이차트')
st.plotly_chart(fig)

 

  • 실행 화면
    • 범계표의 목록을 누르면 원형 그래프에서 해당 값들을 표시/미표시를 할 수 있어 데이터 확인이 매우 용이하다.


막대로 표현된 그래프 그리기 (bar)

  • .bar(데이터, x=x축데이터, y=y축데이터)
  • streamlit.plotly_chart(데이터)

 

  • 예시) 각 프로그래밍 언어별 선호도를 그래프로 표시하기, 단 내림차순 정렬
  • 소스 코드
df_sorted = df.sort_values('Sum', ascending=False) # 합이 높은순 정렬
fig = plotly.bar(df_sorted, x='lang', y='Sum')
st.plotly_chart(fig)

 

  • 실행 화면

 

반응형