# plotly 라이브러리 설치
%pip install plotly==5.11.0
sample_pd = df.filter(F.col("City")=="WAUKEE").toPandas()
toPandas
: PySpark DataFrame 객체를 Pandas DataFrame 객체로 변환Pandas로 변환하는 이유:
- 시각화를 하기 위해서는 모든 데이터를 한번에 로드해야함
- 대부분의 시각화 라이브러리 지원 가능
- Pyspark는 분산 처리 기반으로 시각화에는 적합하지 않음
plotly.graph_objects
import plotly.graph_objects as go
# go.Figure() 함수를 활용하여 기본 그래프를 생성
fig = go.Figure(
# Data 입력
data=[go.Line(x=WAUKEE_pd["Date"], y=WAUKEE_pd["BottlesSold"])],
# layout 입력
layout=go.Layout(
title=go.layout.Title(text="Bottles Sold Amount at WAUKEE")
)
)
# show하면 그래프 표시
fig.show()
plotly.express
import plotly.express as px
fig = px.line(x=WAUKEE_pd["Date"], y=WAUKEE_pd["BottlesSold"], title="Bottles Sold Amount at WAUKEE")
fig.show()
plotly.graph_objects
vs plotly.express
plotly.graph_objects
:
plotly.express
:
graph_objects
와express
의 관계는 범용적인 시각화 라이브러리인matplotlib
과seaborn
의 관계와 비슷함
왜 plotly를 사용할까?
import pandas as pd pd.options.plotting.backend = "plotly"
위와 같이 기본 plotly 설정을 하면 아래와 같이 기본 라이브러리로 시각화가 가능하다.
WAUKEE_pd["BottlesSold"].hist() # 기본 라이브러리로 시각화 가능
fig = px.line(x=WAUKEE_pd["Date"], y=WAUKEE_pd["BottlesSold"],title="Bottles Sold amount at WAUKEE")
# hover label 스타일 설정
fig.update_layout(
hoverlabel_bgcolor="white",
hoverlabel_font_size=10,
hoverlabel_font_color='black',
hoverlabel_font_family="Rockwell")
fig.show()
fig = px.line(
WAUKEE_pd,
x="Date",
y="BottlesSold",
title="Bottles Sold Amount at WAUKEE",
text="SaleDollars" # text로 사용할 컬럼 지정
)
# hover label 스타일 설정
fig.update_layout(
hoverlabel_bgcolor="white",
hoverlabel_font_size=15,
hoverlabel_font_color='black',
hoverlabel_font_family="Rockwell"
)
# hover label의 세부 내용 작성
# html sytle
fig.update_traces(hovertemplate='총 매출: %{text}달러 <br>'
'날짜: %{x} <br>'+
'판매량 : %{y}개')
fig.show()
fig = px.line(
WAUKEE_pd,
x="Date",
y="BottlesSold",
title="Bottles Sold Amount at WAUKEE",
text="SaleDollars"
)
# hover label 스타일 설정
fig.update_layout(
hoverlabel_bgcolor="white",
hoverlabel_font_size=15,
hoverlabel_font_color='black',
hoverlabel_font_family="Rockwell"
)
# hover label의 세부 내용 작성
fig.update_traces(hovertemplate='총 매출: %{text}달러 <br>'
'날짜: %{x} <br>'+
'판매량 : %{y}개')
# 범위 슬라이더 생성
fig.update_layout(xaxis=dict(rangeslider_visible=True)) # x축 기준 슬라이더
fig.show()
import plotly.graph_objects as go
fig = go.Figure()
# 1번 그래프
fig.add_trace(go.Line(
name="BottlesSold",
x=WAUKEE_pd["Date"],
y=WAUKEE_pd["BottlesSold"]
))
# 2번 그래프
fig.add_trace(go.Line(
name="SaleDollars",
x=WAUKEE_pd["Date"],
y=WAUKEE_pd["SaleDollars"]
))
fig.update_layout(
updatemenus=[
dict(
type="dropdown",
direction="down",
buttons=list([
dict(label="Both",
method="update",
args=[{"visible": [True, True]},
{"title": "BottlesSold & SaleDollars"}]),
dict(label="BottlesSold",
method="update",
args=[{"visible": [True, False]},
{"title": "BottlesSold",}]),
dict(label="SaleDollars",
method="update",
args=[{"visible": [False, True]},
{"title": "SaleDollars",}]),
]),
),
]
)
fig.show()