<플레이데이터>부트캠프의 기록/데이터시각화

데이터시각화_3 : Plotly의 기본구조

EZ_SOO 2022. 7. 25. 20:34
Plotly
 

Basic

Plotly's

plotly.com

 

1. 환경설정 : 파이썬에서 실행시킬때

!pip install --upgrade plotly  # 런타임 재실행하기

import plotly.io as pio # Plotly input output
import plotly.express as px # 빠르게 그리는 방법
import plotly.graph_objects as go # 디테일한 설정
import plotly.figure_factory as ff # 템플릿 불러오기
from plotly.subplots import make_subplots # subplot 만들기
from plotly.validators.scatter.marker import SymbolValidator # Symbol 꾸미기에 사용됨
import numpy as np
import pandas as pd
from urllib.request import urlopen
import json

 

2. Plotly로 그래프 그리기

  • fig객체는 기본적으로 Jason 형식으로 데이터를 그린다. 
  • 파이썬에서 Plotly로 그림을 그리는 방법은 3가지가 있다. (Dict/ Express /Graph_object)

① Dict 형식으로 그리는 방법

  • 섬세한 그래프를 그리기에 복잡하여 거의 쓰이지 않는다.
fig = dict({
    "data": [{"type": "bar",
              'x': [1, 2, 3],
              'y': [1, 3, 2]}],
    "layout": {"title": {"text": "Dict형식으로 그리는 방법"}}
    })


pio.show(fig)

② Express를 통해서 그리는 방법

  • px를 통해 템플릿으로 그래프를 빠르게 그리기 가능
tips = px.data.tips()
fig1 = px.scatter(tips, # 데이터명(데이터프레임 형식)
                 x='tip', # x축에 들어갈 컬럼
                 y='total_bill', # y축에 들어갈 컬럼
                 color='sex', # 색상 구분 기준이 될 컬럼명 (seaborn의 hue와 같은 역할)
                 marginal_x = 'box', # scatterplot의 옵션 중 하나인 인접 그래프의 스타일 지정 (히스토그램) 
                 marginal_y = 'histogram',# scatterplot의 옵션 중 하나인 인접 그래프의 스타일 지정 (히스토그램) 
                 trendline="ols",  # x축과 y축으로 지정된 데이터에 대해서 회귀분석(ols로)
                 trendline_color_override="grey",  # trendline 색상 지정
                 hover_name='day', # 팝업 데이터 최상단에 데이터프레임 컬럼명             
                 hover_data=['day', 'size'], # 참고할 데이터 추가 - tips.columns로 설정하면 다 보여줌
                 title='Tips by Total Bill - Scatter Plot', # 그래프 타이틀 지정
                 width=800,  # 그래프의 크기 조절
                 height=600);
fig1.show()

③ Graph_object를 통해서 그리는 방법

  • Graph_objects의 약자인 go를 통해서 Figure객체를 선언하고 Figure내에 필요한 Data와 Layout등을 설정함
  • 섬세한 커스터마이징이 가능
  • 그래프를 겹쳐그릴 수 있음
  • go.Figure
    • data : 데이터에 관한 정보
    • layout : 제목, 폰트, 축, 범례 등 레이아웃 설정 정보
  • go.update_layout : fig에 레이아웃 추가 업데이트
  • go.add_trace : fig에 시각요소 추가 삽입 (subplot, map, 추가 그래프 등)
  • go.make_subplots : 다중 그래프 그리기
fig2 = go.Figure(
    
    # data 파트는 데이터에 관한 정보를 지정
    data=[go.Histogram(name ='Tips per Size',  # 데이터 제목
                 x=tips['size'],  # x축 값 해당 컬럼명
                 y=tips['tip'],  # y축 값 해당 컬럼명
                 hoverlabel = dict(bgcolor = 'green'))],  # 마우스를 올렸을 때 뜨는 정보창의 배경 설정
                
    # layout 파트에서 그래프의 축, 범례 등 부가정보 기입.
    layout=go.Layout(  
        title='Tips 데이터 분석',  # 메인 타이틀 입력
        xaxis=dict(  # x축 설정
            title = '팁금액과 방문인원수',
            titlefont_size=20,
            tickfont_size=10),
        yaxis=dict(  # y축 설정
            title= '전체 금액',
            titlefont_size=15,
            tickfont_size=10),
        bargroupgap=0.5, # 그래프 간의 거리 조절
        autosize=True))

fig2.show()