6. Interative Visualization

유승우·2022년 5월 11일
0

정적 시각화


  • 만약 feature가 10개 있다면 각각을 살펴보는데 10개의 plot이 필요하다.
  • 각각의 관계를 살펴본다면 10*9 /2 = 45개의 plot이 필요하며, 가볍게 데이터를 살펴보기에 공간적 낭비가 크다.
  • 발표 혹은 설득을 위해서는 원하는 메세지를 압축해서 담는 정적 시각화가 좋다.

인터랙티브 종류


  • Select : mark something as interesting
  • Explore : show me something else
  • Reconfigure : show me a different arrangement
  • Encode : show me a different representation
  • Abstract : show me more or less detail
  • Filter : show me something conditionally
  • Connect : show me related items

파이썬의 인터렉티브 라이브러리


  • 각각의 라이브러리는 문법과 제공하는 방법들이 차이가 있으므로 원하는 라이브러리를 선택해서 사용

Matplotlib


  • Matplotlib도 인터렉티브를 제공
  • 하지만, 주피터 노트북 환경 또는 Local에서만 실행할 수 있다.
    • 다른 라이브러리들은 웹에서 deploy 가능
    • mpld3를 사용하면 웹에서 D3-based Viewer 제공

Plotly


  • 인터렉티브 시각화에 가장 많이 사용되는 Plotly

    • 파이썬 뿐만 아니라 R, JS에서도 제공
  • 예시 + 문서화가 잘되어 있기 때문에 커스텀 하기가 쉽다.

  • 통계 시각화(seaborn) 외에도 지리 시각화 + 3D 시각화 + 금융 시각화 등 다양한 시각화 기능 제공

  • 또한, 웹에서 사용가능하며 형광 Color가 인상적이다.

Plotly Express


  • Plotly를 seaborn과 유사하게 만들어 쉬운 문법
  • 커스텀 부분이 부족하지만 다양한 함수 제공해준다.

Bokeh


  • 문법은 Matplitlib과 더 유사한 부분이 있으며, 기본 테마가 Plotly에 비해 깔끔하다.
  • 하지만 문서화가 부족해 커스텀 하기가 어렵다.

Altair


  • Vega 라이브러리를 사용하여 만든 인터렉티브
  • 시각화를 + 연산 등으로 배치하는 것이 파이썬스럽지 않고 자바 스크립트 같은 느낌이라서 혼돈을 줄 수 있다

실습


  • Plolty

    • iris 데이터로 여러 plotly 시각화 진행
    • import plotly
      import plotly.express as px
  • plotly로 시각화를 하면 오른쪽 상단에 여러 인터렉션을 제공한다.

  • scatter

    • x : x축 데이터
    • y : y축 데이터
    • size : 점 크기
    • color : color
    • range_x : x축 범위
    • range_y : y축 범위
    • marginal_x : x 축에 대한 분포 확인
    • marginal_y : y 축에 대한 분포 확인
    • hover_data : 점에 포함되는 정보량 조정
    • hover_name : 점에 포함되는 정보량 조정
    • trendline : 회귀선
    • facet_col : 행으로 나누기
    • facet_row : 열로 나누기
  • line, bar plot도 위의 scatter와 거의 비슷

다양한 차트


  • plotly의 시각화는 seaborn에서 제공하는 다양한 내용과 겹친다.
    • hist : histogram, density_heatmap
    • kdeplot : density_contour
    • boxplot : bxx
    • violinplot “ : ‘violin’
    • stripplot : strip
    • heatmap : imshow
    • pariplot : scatter_matrix
  • 데이터를 트리 구조로 볼 때 유용한 차트
    • sunburst : 연속된 파이 차트 출력
    • treemap : 트리 구조의 차트 출력
# sunburst
fig = px.sunburst(tips, 
                  path=['day', 'time', 'sex'], 
                  values='total_bill')
fig.show()

# treemap
fig = px.treemap(tips, 
                  path=['day', 'time', 'sex'], 
                  values='total_bill')
fig.show()

  • 3차원 차트
    • scatter_3d : 3차원 점 차트 출력
fig = px.scatter_3d(iris, 
                    x='sepal_length',
                    y='sepal_width', 
                    z='petal_width',
                    symbol='species',
                    color='species')
fig.show()

  • 다차원 데이터 시각화
    • parallel_coordinates
    • parallel_categories
# parallel_coordinates
fig = px.parallel_coordinates(iris,color="species_id",
															#color_continuous_scale=px.colors.diverging.Tealrose,)
fig.show()

# parallel_categories
tips = px.data.tips()
tips['sex'] = tips['sex'].apply(lambda x : 'red' if x=='Female' else 'gray')
fig = px.parallel_categories(tips, color='sex')
fig.show()

  • 지도 시각화
    • scatter_geo
    • choropleth
# scatter_geo
fig = px.scatter_geo(geo_data, 
                     locations="iso_alpha",
                     color="continent", 
                     size="pop",
                     animation_frame="year",
                     projection="natural earth")
fig.show()

# choropleth
fig = px.choropleth(geo, 
                     locations="iso_alpha",
                     color="continent", 
                     projection="natural earth")
fig.show()

0개의 댓글