멋사 AISCOOL 7기 Python/INPUT
[시각화] Plotly
dundunee
2022. 10. 27. 16:34
plotly는 파이썬의 대표적인 인터랙티브 시각화도구이다. Plotly는 개인 및 공동 작업을 위한 온라인 그래프 작성, 분석 및 통계 도구와 Python , R, MATLAB, Perl, Julia, Arduino 및 REST 용 과학 그래프 라이브러리를 제공한다.
Plotly Express: high-level interface for data visualization
seaborn과 사용법이 비슷하며, plotly.graph_objectc에 비해 비교적 간단한 편이다.
가장 큰 장점은 한글폰트 설정이 따로 필요없다는 점이며, 인터페이스만 파이썬을 사용함을 알 수 있다.
import plotly.express as px
- scatter([data_frame, x, y, color, symbol, …])
- line([data_frame, x, y, line_group, color, …])
- area([data_frame, x, y, line_group, color, …])
- bar([data_frame, x, y, color, facet_row, …])
- violin([data_frame, x, y, color, facet_row, …])
- box([data_frame, x, y, color, facet_row, …])
- strip([data_frame, x, y, color, facet_row, …])
- histogram([data_frame, x, y, color, …])
- pie([data_frame, names, values, color, …])
- treemap([data_frame, names, values, …])
- sunburst([data_frame, names, values, …])
pd.read_html("https://en.wikipedia.org/wiki/List_of_S%26P_500_companies")[0]
FAANG = ["FB", "AMZN", "AAPL", "NFLX", "GOOGL"]
# faang_list 의 종가 가져오기
faang_list = [fdr.DataReader(sym,"2022")["Close"] for sym in FAANG]
# concat 으로 데이터 병합하기
df_faang = pd.concat(faang_list, axis=1)
df_faang.columns = FAANG
# 일별 수익률 구하기
#-1을 하는 이유는 첫행을 0으로 만들기 위해서
df_ratio = (df_faang / df_faang.iloc[0]) - 1
df_ratio
px.line
px.line(df_ratio, facet_col="company", facet_col_wrap=3)
px.area
seaborn의 co와 plotly의 facet_col은 같은 역할을 한다.
만약 여러개의 컬럼에 대해 서브플롯을 만들고 싶다면 컬럼들의 이름을 지정해주면 된다.
# px.area 로 수익률 그래프 그리기
px.area(df_ratio, facet_col="company",facet_col_wrap=1)
px.bar
px.bar(df_ratio, facet_col="company", facet_col_wrap=1)
px.scatter
px.scatter(df_ratio, facet_col="company", facet_col_wrap=1)
2개 그래프 동시에 그리기: marginal
px.scatter_matrix
px.box
# px.box
px.box(df_ratio)
px.box(df_ratio, notched=True, points="all")
px.violin
px.strip
px.histogram
px.histogram(df_ratio, nbins=50, facet_col="company", facet_col_wrap=2)