이전 게시물에서는 Python에서 시각화를 위해 이미 seaborn 및 matplotlib.pyplot을 소개했습니다. 이 글에서는 altair 모듈을 소개하고 싶습니다. 이것은 Python에서 시각화를 지원하는 대체 모듈입니다.
altair 모듈은 명령 프롬프트에서 pip install로 설치할 수 있습니다.
아래에서는 pandas 및 pandas_datareader와 함께 altair 모듈을 가져옵니다. pandas_datareader를 사용하여 Tesla의 주가 데이터를 읽습니다. 알테어에서 만든 차트로 주가 전개를 시각화하겠습니다. 하지만 먼저 Yahoo Finance에서 데이터를 쿼리하고 검색된 데이터 프레임의 헤더를 표시합니다.
# 관련 모듈 가져 오기 import pandas as pd import altair as alt import pandas_datareader.data as web import datetime # 지난 5 년간 테슬라 주가 데이터 읽기 start = datetime.datetime(2015,10,11) end = datetime.datetime(2020,10,11) df = web.DataReader("TSLA","yahoo",start,end) # 주가 데이터 프레임의 헤더 표시 df.head()
High | Low | Open | Close | Volume | Adj Close | |
---|---|---|---|---|---|---|
Date | ||||||
2015-10-12 | 44.599998 | 43.054001 | 44.598000 | 43.116001 | 19181500.0 | 43.116001 |
2015-10-13 | 44.504002 | 42.226002 | 42.655998 | 43.849998 | 25857500.0 | 43.849998 |
2015-10-14 | 44.189999 | 43.085999 | 44.133999 | 43.375999 | 15522000.0 | 43.375999 |
2015-10-15 | 44.346001 | 42.740002 | 43.285999 | 44.262001 | 14221000.0 | 44.262001 |
2015-10-16 | 46.096001 | 44.574001 | 44.608002 | 45.402000 | 21672500.0 | 45.402000 |
현재 날짜는 데이터 프레임의 행 인덱스입니다. altair로 작업하려면 지정된 열 헤더가있는 별도의 열로 추가하는 것이 좋습니다.
df["Dates"] = df.index
이제 데이터가 있으므로 Python의 altair 모듈을 사용하여 주가 차트를 만들 수 있습니다.
# altair로 차트 만들기 chart = alt.Chart(df).mark_area().encode( x="Dates", y="Close" ) # altair 차트 표시 chart
아주 기본적인 차트였습니다. 아래에서 색상 그라디언트를 사용하여 다른 영역 차트를 만듭니다.
# altair 차트 생성 chart = alt.Chart(df).mark_area(line={'color':'darkgreen'},color=alt.Gradient( gradient='linear', stops=[alt.GradientStop(color='white', offset=0), alt.GradientStop(color='darkgreen', offset=1)])).encode(x="Dates",y="Close") # altair 차트 표시 chart
차트에 제목을 추가하고 싶습니다. x 축과 y 축 제목도 변경하고 싶습니다. 아래 코드에서 이렇게합니다.
# 차트 제목 추가 chart.title = "Daily TSLA stock closing prices [USD]" # x 및 y 축 레이블 조정 chart.encoding.x.title = "Time" chart.encoding.y.title = "Daily closing price [USD]" # 수정 된 차트 표시 chart
이제 캔들 스틱 다이어그램을 만들어 보겠습니다. 캔들 스틱 다이어그램으로 주식 분석에 대한 설명은 예를 들면 다음과 같습니다. 여기에서 찾을 수 있습니다 : https://diagrammm.com/candlestick_chart
# 색상 조건 생성 color_conditions = alt.condition("datum.Open <= datum.Close", alt.value("green"), alt.value("red"))# build chart chart = alt.Chart(df).encode(x = "Dates") # 차트 제목 설정 chart.title = "Candle-stick diagram of TSLA stock prices" # 차트의 x 축 레이블 설정 chart.encoding.x.title = "Time" # mark_rule () 메서드를 사용하여 규칙 표시를 구성합니다. rules = chart.mark_rule().encode( y = "Low", y2 = "High") # 규칙에 대한 y 축 레이블 조정 rules.encoding.y.title = "Price" # 구성 막대 bars = chart.mark_bar().encode( y="Open", y2="Close", color = color_conditions) # 표시 규칙과 막대 (둘 다 동일한 기본 차트를 기반으로 함) rules + bars
위의 캔들 스틱 다이어그램에서 altair bar는 altair 규칙 위에 두 번째 레이어로 배치되었습니다.
Tesla의 주가 데이터를 사용하여 더 많은 플로팅 예제를 만들어 보겠습니다. 아래 코드에서 Tesla 일일 종가에 대한 주가 라인 플롯을 생성합니다.
# 라인 플롯 생성 chart = alt.Chart(df).mark_line().encode(x="Dates",y="Close") # 제목 및 축 라벨 설정 chart.title = "Daily TSLA stock closing prices" chart.encoding.x.title = "Time" chart.encoding.y.title = "Price [USD]" # 디스플레이 라인 플롯 chart
차트를 만들 때 예를 들어 몇 가지 추가 속성을 지정할 수도 있습니다. 차트의 너비 :
# 색상 조건 생성 color_conditions = alt.condition("datum.Open <= datum.Close", alt.value("green"), alt.value("red"))# build chart chart = alt.Chart(df).encode(x = "Dates").properties(width=800) # 차트 제목 설정 chart.title = "Candle-stick diagram of TSLA stock prices" # 차트의 x 축 레이블 설정 chart.encoding.x.title = "Time" # mark_rule () 메서드를 사용하여 규칙 표시를 구성합니다. rules = chart.mark_rule().encode( y = "Low", y2 = "High") # 규칙에 대한 y 축 레이블 조정 rules.encoding.y.title = "Price" # 구성 막대 bars = chart.mark_bar().encode( y="Open", y2="Close", color = color_conditions) # 표시 규칙과 막대 (둘 다 동일한 기본 차트를 기반으로 함) rules + bars
이것으로 Python의 altair 모듈에 대한 기본적인 소개를 마쳤습니다. 더 많은 정보를 원하시면 I e.g. 문서 확인을 권장합니다 : https://altair-viz.github.io/
예를 들어 Python 및 R의 시각화에 대한 다른 게시물을 확인할 수도 있습니다. R의 Leaflet을 사용한 공간 데이터 시각화, Python의 Folium 및 Leaflet을 사용한 지오 코딩 및 히트 매핑, R의 deckgl을 사용한 3D 히트 맵핑. 또한 Python의 Seaborn 및 Matplotlib.pyplot을 사용한 데이터 시각화에 대한 여러 자습서를 작성했습니다. 예 : 몬테카를로 시뮬레이션과 함께 Markowitz 포트폴리오 이론을 적용하여 트럭 운송 주식의 효율적인 경계를 시각화하기 위해 Matplotlib를 사용했습니다.
최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply