마우스 움직임에 반응해 실시간으로 모양이 변하는 인터랙티브 그래프를 만드는 방법을 알아보자.
12-1 인터랙티브 그래프 만들기
인터랙티브 그래프란?
인터랙티브 그래프(interactive graph)는 마우스 움직임에 반응하며 실시간으로 모양이 변하는 그래프임. 인터랙티브 그래프를 만들면 그래프를 자유롭게 조작하면서 관심 있는 부분을 자세히 살펴볼 수 있음. 그래프를 HTML 포맷으로 저장하면 일반 사용자도 웹 브라우저에서 그래프를 조작할 수 있음.
plotly.com에서 다양한 인터랙티브 그래프를 직접 조작해 볼 수 있음(plotly.com/python).
[Do it! 실습] 산점도 만들기
plotly 패키지로 인터랙티브 그래프를 만드는 방법을 알아보겠음.
패키지 준비하기
아나콘다 프롬프트에서 plotly 패키지와 jupyter-dash 패키지를 설치한 다음 JupyterLab을 재실행함. jupyter-dash는 plotly로 만든 그래프를 노트북에 출력하는 패키지임.
pip install plotly
pip install jupyter-dash
산점도 만들기
plotly를 이용해 산점도를 만들어 보겠음. 먼저 그래프를 만드는 데 사용할 mpg 데이터를 불러옴.
import pandas as pd
mpg = pd.read_csv('mpg.csv')
plotly.express의 scatter()를 이용하면 seaborn의 scatterplot()과 비슷한 문법으로 산점도를 만들 수 있음. 데이터 프레임을 입력하는 파라미터명이 data가 아니라 data_frame이니 주의하기 바람.
# 산점도 만들기
import plotly.express as px
px.scatter(data_frame = mpg, x = 'cty', y = 'hwy', color = 'drv')
인터랙티브 기능 활용하기
plotly로 만든 그래프는 마우스 움직임에 반응함. 산점도의 표식에 마우스 커서를 올리면 값이 나타남.
마우스를 드래그하면 x, y축의 범위가 바뀜. 그래프를 더블 클릭하면 원래대로 되돌아옴. 범례 항목을 클릭하면 특정 범주의 표식을 켜거나 끌 수 있음.
![]() |
![]() |
[Do it! 실습] 막대 그래프 만들기
px.bar()를 이용하면 막대 그래프를 만들 수 있음. 막대에 마우스 커서를 올리면 해당 항목의 값이 나타남. 범례의 항목을 클릭하면 비교할 막대를 선택할 수 있음.
# 자동차 종류별 빈도 구하기
df = mpg.groupby('category', as_index = False) \
.agg(n = ('category', 'count'))
df
# 막대 그래프 만들기
px.bar(data_frame = df, x = 'category', y = 'n', color = 'category')
[Do it! 실습] 선 그래프 만들기
px.line()을 이용하면 선 그래프를 만들 수 있음. 그래프를 만드는데 사용할 economics 데이터를 불러와 일자별 저축률을 선 그래프로 표현하겠음. 그래프의 선 위에 마우스 커서를 올리면 날짜와 값이 나타나고, 드래그하여 특정 영역을 지정하면 x, y축의 범위를 지정할 수 있음.
# economics 불러오기
economics = pd.read_csv('economics.csv')
# 선 그래프 만들기
px.line(data_frame = economics, x = 'date', y = 'psavert')
[Do it! 실습] 상자 그림 만들기
px.box()를 이용하면 상자 그림을 만들 수 있음. 상자 그림 위에 마우스 커서를 올리면 요약 통계량이 나타나고, 극단치 표식 위에 마우스 커서를 올리면 극단치가 나타남. 범례의 항목을 클릭하면 비교할 범주를 선택할 수 있음.
# 상자 그림 만들기
px.box(data_frame = mpg, x = 'drv', y = 'hwy', color = 'drv')
HTML 파일로 저장하기
write_html()을 이용하면 그래프를 HTML 파일로 저장할 수 있음. HTML 파일은 파이썬과 JupyterLab이 설치되지 않은 곳에서도 웹 브라우저만 있으면 열어볼 수 있음.
# 그래프를 변수에 할당하기
fig = px.scatter(data_frame = mpg, x = 'cty', y = 'hwy', color = 'drv')
# html로 저장하기
fig.write_html('scatter_plot.html')
{알아 두면 좋아요} plotly 활용하기
그래프 크기 조절하기
그래프의 가로 크기는 width, 세로 크기는 height로 조절할 수 있음.
px.scatter(data_frame = mpg, x = 'cty', y = 'hwy', color = 'drv',
width = 600, height = 400)
새 창에 그래프 출력하기
다음 코드를 실행한 다음 plotly 함수를 실행하면 새 웹 브라우저 창에 그래프를 출력함. 창 크기를 조절하면 그래프 크기도 창 크기에 맞춰 조절됨.
import plotly
plotly.io.renderers.default = 'browser'
설정을 원래대로 되돌리려면 다음 코드를 실행하면 됨.
plotly.io.renderers.default = 'jupyterlab'
다양한 인터랙티브 그래프 만들기
plotly를 이용하면 다양한 인터랙티브 그래프를 만들 수 있음. plotly 공식 문서에서 plotly로 만든 그래프와 코드를 살펴보자.
- plotly 공식 문서: plotly.com/python
- 12장 END -
'데이터 분석(Data Analysis) > 쉽게 배우는 파이썬 데이터 분석' 카테고리의 다른 글
[다섯째마당_데이터 과학의 세계] 14 통계 분석 기법을 이용한 가설 검정 (0) | 2024.01.01 |
---|---|
[넷째마당_다양한 데이터 분석의 세계] 13 마크다운으로 데이터 분석 보고서 만들기 (0) | 2023.12.31 |
[넷째마당_다양한 데이터 분석의 세계] 11 지도 시각화 (0) | 2023.12.31 |
[넷째마당_다양한 데이터 분석의 세계] 10 텍스트 마이닝 (0) | 2023.12.30 |
[셋째마당_실전! 데이터 분석 프로젝트] 09 데이터 분석 프로젝트 - 한국인의 삶을 파악하라! (0) | 2023.12.29 |