안녕하세요
전공 개발자가 아니기 때문에 많이 부족합니다. 용어나 단어가 틀린경우가 있을 수도 있습니다.
저도 함께 공부해가기 위해 작성하는 내용으로 틀리거나 보충했으면 좋겠다하는 내용이 있으시면 지체 없이 말씀해주시면 반영할 수 있도록 하겠습니다.
방문해주셔서 감사합니다.
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과 유사하게 기본 데이터셋을 제공해주는데요 이를 활용해서 한번 그려보도록 하겠습니다.
- 그래프에 사용하기 위한 Dataframe 전처리
- Fig 객체 선언 ( df, 그래프 종류 , 그래프에 사용할 정보 등 .. 입력 )
- fig.show를 통해 화면에 띄우기
df = px.data.iris()
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
- 그래프에 사용하기 위한 Dataframe 전처리
- Fig 객체 선언
- fig.add_trace를 통해 그래프 데이터 정보 저장
- fig.update_layout을 통해 layout 설정
- 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 |
---|