본문 바로가기
Python/seaborn & matplotlib

Plotly ( + Bonus)

by Mr.DonyStark 2024. 2. 15.

Plotly 를 활용하여

초보자들은 복잡한 플롯을 만드는 과정을 단순화하고 훌륭한 시각화를 시작할 수 있음

https://plotly.com/python/reference/

 

Single-page

Figure

plotly.com

□ 라이브러리

import chart_studio.plotly as py
import cufflinks as cf

 

□ 생성규칙

  ○ fig = go.Figure()로 기본 객체를 만들고
  ○ fig.add_trace()에 그래프 객체를 추가
  ○ fig.update_layout()으로 layout 업데이트 (필요시)
  ○ fig.update_annotation()으로 annotation (필요시)

  ○ fig.show()로 그래프 보기

#판다스로 데이터프레임 생성
#넘파이 .random.rand 함수로 10까지 랜덤 숫자 지정 + A, B 컬럼지정
df = pd.DataFrame(np.random.rand(10,2),columns=['A','B'])

#1단계 fig = go.Figure()로 기본 객체를 만들고
fig = go.Figure()

#2단계 fig.add_trace()에 그래프 객체를 추가
fig.add_trace(
    go.Scatter(
        x=df.index, y=df['B'], mode = 'lines', name='A'
    )
)
fig.add_trace(
    go.Scatter(
        x=df.index, y=df['A'], mode='lines+markers+text', name='B', text=df.index, textposition='top center'
    )
)

fig.show()

 

□ 예제

  ○ 라이브러리 호출

import numpy as np
import pandas as pd
import plotly.graph_objects as go

 

  ○ 데이터프레임생성

df = pd.DataFrame(np.random.rand(10,2), columns=['A','B'])

 

  ○ 1단계 : 그래프 기본객체 생성

fig = go.Figure()

 

  ○ 2단계 : 그래프 객체추가

    - texttemplate : 수치표시형식 조정

   - text : 표현수치

   - textpostion : 수치 위치. auto를 준다면 그래프 안에 수치표시됨

fig.add_trace(
    go.Bar(
        x=df.index, y=df['A'], name='A', text=df['A'], textposition ='auto', texttemplate='%{y:2f}'
    )
)
fig.add_trace(
    go.Bar(
        x=df.index, y=df['B'], name='B', text=df['B'], textposition ='auto', texttemplate='%{y:2f}'
    )
)

 

  ○ 3단계 : layout 업데이트

    - title : 제목지정

     → text : 제목입력

     → font : 폰트사이즈 

     → x, y : x,y축 조절을 통해 제목위치 지정

    - showlegend : 범례 표시여부

    - xaxis : x축에 관련된 설정을 지정

     → title: x축의 레이블로 사용될 텍스트를 'random number'로 설정
     → showticklabels: x축의 눈금 레이블을 표시할지 여부를 True로 설정
     → dtick : x축 간격을 1로 설정
    -  yaxis: y축에 관련된 설정을 지정
     →  title: y축의 레이블로 사용될 텍스트를 'A'로 설정
     →  autosize: 그래프의 크기를 자동으로 조절할지 여부를 설정. False로 설정되어 수동으로 크기를 조절
     → width : 그래프의 너비를 600으로 설정
     →  height : 그래프의 높이를 350으로 설정

fig.update_layout(
    {
        'title':{
            'text' : 'Graph with <b>go.Bar</b>',
            'x' : 0.5,
            'y' : 0.9,
            'font' : {
                'size' : 20
            }
        }
    ,
    'showlegend' : True,
    'xaxis': {
        'title':'random number',
        'showticklabels': True,
        'dtick':1 
    },
    'yaxis':{
        'title':'A'
    },
    'autosize' : False,
    'width':600,
    'height':350
    }
)