반응형
민병곽
곽병맛의 인생사 새옹지마
민병곽
전체 방문자
오늘
어제
  • 분류 전체보기 (168)
    • 취업 (56)
      • 자기소개서 (21)
      • 기업정보 (8)
      • 나 (3)
      • 면접 (1)
      • 반도체 공부 (23)
    • 취미 (10)
      • 소액투자 (15)
      • 22_project (1)
    • Python (2)
      • 시각화 (2)
    • 학과공부 (6)
      • 품질 (1)
      • 생산 (1)
      • 자동화 (0)
      • 산업제어 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Plotly
  • 미국주식
  • Python
  • 주식종목분석
  • Fint
  • entj투자 #전략투자자 #장기계획 #성과중심 #리더형포트폴리오 #혁신산업투자 #계획적리밸런싱 #고수익전략 #mbti투자성향 #투자궁합
  • 주식
  • 데이터분석
  • isfp투자 #감성투자 #자유로운포트폴리오 #테마주투자 #트렌드캐치 #감성리듬투자 #mbti재테크 #자유형투자자 #투자감각 #포트폴리오관리
  • estp투자 #mbti투자성향 #단타매매 #트레이딩전략 #투자감각 #하이리스크하이리턴 #시장판단력 #뉴스기반투자 #실전투자 #etf전략
  • esfj투자 #감성투자자 #정기투자 #배당etf #책임있는포트폴리오 #가족중심투자 #투자궁합 #안정형투자자 #mbti성향재테크 #자산관리스타일
  • 반도체공부
  • bei지표해석 #인플레이션예측 #금리정책전망 #채권시장 #기대인플레이션
  • 소액투자
  • 투자
  • a7c
  • 배당주
  • 주린이
  • 반도체
  • 핀트
  • 나스닥
  • 반도체8대공정
  • 주식투자
  • PER
  • esfp투자 #트렌드매매 #감성투자자 #핫테마etf #포트이원화 #투자커뮤니티 #감정매매방지 #mbti재테크 #즐거운투자 #자산루틴
  • 삼성전자
  • 주식입문
  • 로보어드바이저
  • 종목분석
  • 8대공정

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
민병곽

곽병맛의 인생사 새옹지마

[plotly 맨땅에 헤딩] 1. Plotly 소개 및 입력 방식 [ plotly express , graph_objects ]
Python/시각화

[plotly 맨땅에 헤딩] 1. Plotly 소개 및 입력 방식 [ plotly express , graph_objects ]

2022. 8. 22. 22:10
728x90
반응형

안녕하세요

 

전공 개발자가 아니기 때문에 많이 부족합니다. 용어나 단어가 틀린경우가 있을 수도 있습니다. 

저도 함께 공부해가기 위해 작성하는 내용으로 틀리거나 보충했으면 좋겠다하는 내용이 있으시면 지체 없이 말씀해주시면 반영할 수 있도록 하겠습니다. 

 

방문해주셔서 감사합니다.


https://plotly.com/python/

 

Plotly

Plotly's

plotly.com

 

해당 내용은 위 사이트 및 기타 블로그들을 참고하여 작성하고 있습니다. 

 

제가 Plotly를 공부하게 된 계기 및 그 안에서 생각한 장점은 아래와 같았습니다. 

1. Dash 와 연계하여 Dashboard (대시보드)를 쉽게 구현할 수 있다. ( 나중에 프로젝트 할 때 도움될 것 같았음 ) 

2. Interactive한 그래프를 만들 수 있다. ( 그래프 보여주는게 끝이 아니라 그안에서 요소 선택 및 상호작용 가능 ) 

3. 예쁘다 ( 다른 라이브러리도 충분히 예쁘게 만들 수 있겠지만 px나 go에서 기본으로 제공해주는 그래프가 저는 예뻐보이더라구요 ) 

 

물론 파이썬을 활용해서 시각화를 할 때 대표적으로 Matplotlib이나 Seaborn을 많이 사용하긴 하지만, 

 

plotly는 내가 생성한 그래프 안에서 줌인, 줌아웃  및 내가 원하는 부분만 선택하여 파일 저장이 가능합니다. 

추가적으로 Dash라는 라이브러리와 연계하여 쉽게 대시보드를 구현하고, 이를 통해 원하는 정보를 한눈에 확인 가능한 점이 가장 큰 차이점이자 장점이라고 생각이 들었습니다. 

 

저는 이러한 Plotly를 활용해서 제 관심분야 중 하나인 주식과 연계해 제 입맛에 맞게 Dashboard를 구현해 보고 싶은 마음이 생겨 공부를 시작하게 되었습니다. 

 


Plotly의 입력 방식 

 

Plotly는 크게 두가지 방식으로 입력하여 사용할 수 있습니다. 

 

  • 1. Plotly.express (px) : DataFrame형태를 입력으로 넣고, 구성요소만 지정해주면 쉽게 구현이 가능합니다 
  • 장점 : 쉽고 빠르게 그래프를 만들 수 있다.
  • 단점 : 입맛에 맞게 여러가지 구체적인 커스텀은 어려울 수도 있다. 

 

  • 2. plotly.graph_objects (go) : 앞의 px와 다르게 구성요소를 객체마다 각각 작성해서 그래프를 구성하는 형식입니다.
  • 장점 : 그래프의 세부적인 조정 및 생성이 가능합니다.
  • 단점 : 복잡한 그래프의 경우 코드의 양이 많고 복잡해질 수 있습니다.

 

공부할 때는 주로 go를 활용해서 일일히 연습해보면서 공부했는데, 생각해보면 px를 쓰면 더 쉽고 빠르게 만들 수 있는 경우도 많았던 것 같습니다.. 상황에 따라 잘 선택해서 쓰는게 코드도 짧게 쓰고 효율적이지 않을까..

 

0. Library Import 

from pyparsing import col
from plotly import tools
import plotly.offline as offline 
import plotly.graph_objs as go
import plotly.express as px

위와 같이 코드를 통해 라이브러리를 불러와서 사용합니다. 

 

간단하게 그래프를 만들어 보겠습니다. 

 

1. Plotly.express 

plotly에서도 Scikit-learn과 유사하게 기본 데이터셋을 제공해주는데요 이를 활용해서 한번 그려보도록 하겠습니다.

 

  1. 그래프에 사용하기 위한 Dataframe 전처리
  2. Fig 객체 선언  ( df, 그래프 종류 , 그래프에 사용할 정보 등 .. 입력 ) 
  3. fig.show를 통해 화면에 띄우기 

 

df = px.data.iris()

df

1) Scatter plot 

fig = px.scatter(df , x='sepal_width',y='sepal_length', color = 'species',size = 'petal_width')
fig.show()

color , size 등 여러가지 조절 가능 

2. Box plot 

fig = px.box(df , x='species', y='sepal_length')
fig.show()

 

위처럼 Plotly express를 활용할 경우 그래프 형식과 인자만 결정해주면 아주 쉽고 빠르게 그래프를 형성할 수 있습니다. 

 

 

2. Plotly graph_object

https://medium.com/bootrain-blog/data-visualization-with-plotly-63c6a71b2e1e

 

  1. 그래프에 사용하기 위한 Dataframe 전처리
  2. Fig 객체 선언 
  3. fig.add_trace를 통해 그래프 데이터 정보 저장 
  4. fig.update_layout을 통해 layout 설정 
  5. fig.show를 통해 화면에 띄우기 

1) Scatter Plot

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=df[df['species']=='setosa']['sepal_width'],
    y=df[df['species']=='setosa']['sepal_length'],
    mode = 'markers',
    name = 'setosa'
))

fig.add_trace(go.Scatter(
    x=df[df['species']=='versicolor']['sepal_width'],
    y=df[df['species']=='versicolor']['sepal_length'],
    mode = 'markers',
    name = 'versicolor'
))

fig.add_trace(go.Scatter(
    x=df[df['species']=='virginica']['sepal_width'],
    y=df[df['species']=='virginica']['sepal_length'],
    mode = 'markers',
    name = 'virginica'
))

fig.update_layout(
    title = 'plotly scatter practice',
    height = 700
)

fig.show()

 

 

 

 

add_trace부분에서 marker 설정을 추가하면 color나 Size또한 조절해서 px 그래프와 동일하게 만들 수도 있을것 같네요.. 귀차니즘..

 

-> go를 사용하면 px보다 좀더 귀찮고 코드가 길어질 수 있다..라는 점

 

위 그래프에서는 아래와 같이 for문을 사용해서 좀 짧게 줄일수도 있을것 같네요. 

 

fig = go.Figure()

species_list = list(df['species'].unique())

for i in species_list:
    fig.add_trace(go.Scatter(
        x=df[df['species']==i]['sepal_width'],
        y=df[df['species']==i]['sepal_length'],
        mode = 'markers',
        name = i
    ))

fig.update_layout(
    title = 'plotly scatter practice',
    height = 700
)

fig.show()

동일한 결과


자 이제 간략한 Plotly에 대한 설명과 입력 방식은 알아보았으니..
이걸로 뭘 할 수 있을지와 해보고 싶은지를 생각해보면 좋을것 같습니다.


저는 이걸로 제 관심 분야중 하나인 주식과 관련된 Dashboard를 구현해볼까 합니다.. 

 

 

 

반응형

'Python > 시각화' 카테고리의 다른 글

[plotly 맨땅에 헤딩] 2. Plotly를 활용한 미국 주식 Dashboard 만들기 ( yfinance api를 통한 data download )  (0) 2022.08.22
    'Python/시각화' 카테고리의 다른 글
    • [plotly 맨땅에 헤딩] 2. Plotly를 활용한 미국 주식 Dashboard 만들기 ( yfinance api를 통한 data download )
    민병곽
    민병곽
    하고 싶은 것 , 해야 하는 것, 했어야 했던 것

    티스토리툴바