ML | 그래프 그릴 때 뭐 써야해? Matplotlib VS Seaborn VS Plotly

소리·2023년 11월 23일
0

plotly.express 란?

: 그래프를 한 번에 그리는 함수/기능를 포함하고 있다.
출처
.
.

import plotly.express as px
px.histogram

import plotly.graph_objects as go
fig = go.Figure(
    # Data 입력, figure은 plotly작업 기본단위
    data=[go.Bar(x=[1, 2, 3], y=[1, 3, 2])],
    # layout 입력
    layout=go.Layout(
        title=go.layout.Title(text="A Graph Object"))
    )

🤔 강의에서 발견한 모듈, 이게 뭐지?

특징

  • 그래프 개체를 그리는데 사용한다. 다양한 유형의 그림을 만드는데 필요한 30개 이상의 기능이 있다.
  • ploty.graph_objects.Figure 인스턴스(객체)를 반환한다.

.
.

포함된 기능

예시)

  • 기본 내용 (불러오기, 축 지정, 색상 삽입)

#불러오기
import plotly.express as px

#country가 canada 인 것만 가져와서 df에 저장
df = px.data.gapminder().query("country=='Canada'")

#px.line( 데이터 프레임, x축에 들어갈 column명, y축에 들어갈 column명 )
fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada' )
fig.show()
df = px.data.gapminder().query("continent=='Oceania'")
fig = px.line(df, x="year", y="lifeExp", color='country', markers=True)

#color는 색상으로 구분할 수 있게, Seaborn hue 속성과 비슷
#markers는 선 그래프에 마커 표시
#만약 marker 대신 symbol을 쓴다면 symbol : 데이터 별 표시되는 마커가 각기 다르게 지정할 수 있습니다
  • 그 외 파라미터 (제목, 라벨, 길이조정, 툴팁)


# labels={}로 축의 레이블 설정을 할 수 있고, 변경 시 dictionary 형태로 지정
# title = ''는 그래프의 타이틀 지정
# width = , height = : pixel 단위 지정
# tooltip : 마우스오버로 함수의 기본적인 내용이 표시된다. hover_name = '' : 볼드체로 이름 표시 / hover_data = [] : 내용 표시

#tooltip 커스터마이징
fig = px.bar(df, x='year', y='pop', color='country',
             hover_name = 'country',
             hover_data={"pop":':.2f', #tool tip에 표시되는 데이터 포맷팅
                         "country":False, #tool tip에서 데이터 삭제
                         "continent":True, #tooltip 에 데이터 추가
                         "lifeExp":':.2f' #데이터 추가하고 포맷팅
                        } 
            )




#subplot 표시
df = px.data.gapminder().query("iso_alpha == 'KOR'")
fig = px.line(df, x='year', y='pop', color='country',
             facet_col='country') #지정한 데이터에 대해서 가로 방향으로 subplot을 표시합니다.
                                     #필요 시, facet_col_wrap를 통한 최대 표시되는 column 개수 지정가능

#facet_col : 지정한 데이터에 대해서 가로 방향으로 subplot을 표시

df = px.data.gapminder().query("iso_alpha == 'KOR'")
fig = px.line(df, x='year', y='pop',color='country',
             facet_row='country')
#facet_col_wrap : 최대 표시되는 column 개수 지정 가능

예제 내용 출처 / 더 자세한 내용 공부
.
.

go.Figure()?

출처

What is difference from Matplotlib VS Seaborn VS Plotly

🔎 Matplotlib

: 기본 선부터 복잡한 시각화까지 만들수 있는 기본 라이브러리.

장점

  • 다양한 시각화 사용자 옵션을 제공
  • 세밀하게 그래프를 조정 가능
  • 다양한 유형의 그래프와 차트 생성

단점

  • 유형에 따라 많은 코드 작성이 필요한 그래프가 있음
  • 세분화된 구문은 학습 초기에 사용하기 어려움

주로 사용하는 곳

  • 기본 선, 막대 및 산점도

.
.

🔎 Seaborn

: matplotlib을 기반으로 구축되었으며 통계 그래픽 생성을 쉽게 할 수 있다. matplotlib보다 복잡한 시각화를 쉽게 생성할 수 있다.

장점

  • 내장된 다양한 테마와 색상 팔레트 제공 (심미적 시각화 가능)
  • 고급 통계 도표(상자도표, 바이올린도표)을 단순화
  • 다변량 관계 시각화 지원

단점

  • 사용하기 쉽지만 세밀한 사용자 옵션 제공에 제한이 있음

주로 사용하는 곳

  • box plots, violin plots 등 통계 도표
  • heatmaps, 상관행렬
  • pair plots

.
.

🔎 Plotly

: 대화형 및 동적 시각화를 만드는 데 중점을 두며, 대시보드와 대화형 데이터 탐색 생성에 적합

장점

  • 사용자 입력에 응답하는 동적, 대화형 시각화 제공
    즉 마우스 오버를 하면 해당 값의 내용이 뜬 다는 뜻!
  • 3D도표, 지리적 지도 등 광범위한 차트 유형 포함
  • 대화형 대시보드 및 웹 애플리케이션 생성

단점

  • 렌더링에 많은 리소스 필요
  • 학습 어려움

주로 사용하는 곳

  • interactive line charts, bar charts, scatter plots
  • 3D plot, 지리적 시각화
  • 데이터 탐색을 위한 interactive dashboard

이미지 출처

.
.

✏️ 정리해보자면

matplotlib는 사용자가 직접 코드를 입력해야하는 것이 많지만, 그만큼 생각하는 그래프를 그릴 수 있으며
seaborn은 기본적으로 제공하는 파라미터가 많아 간결한 코드로 시각적으로 완성도 높은 그래프를 그릴 수 있다.
plotly는 동적 및 대화형 시각화 시 사용하는 것이 좋다.

참고 출처

profile
데이터로 경로를 탐색합니다.

0개의 댓글