KeiStory

pykrx 로 주가 정보 차트로 표시하기

 

이전 시간에 pykrx 를 이용해 주가 정보를 가져올수 있었습니다.

2024.06.27 - [코딩/Python_AI] - pykrx 를 이용해 주가 정보 가져오기

이제 이 데이터를 차트로 표시하는 방법입니다.

 

아래 예시는 삼성전자(00530) 데이터를 가지고 이번달(12월22까지) 종가 데이터를 가져와 표시합니다.

먼자 종가 데이터를 아래 코드를 이용해 가져옵니다. 

from pykrx import stock

# 삼성전자 종가 데이터 가져오기
df = stock.get_market_ohlcv_by_date("20231201", "20231222", "005930")
print(df)

df(DataFrame) 에 날짜별 종가 데이터가 입력되고

이 입력된 데이터를 이용해 X 축은 날짜로 Y 축은 종가로 표시합니다.

import matplotlib.pyplot as plt

# 종가 데이터를 차트로 표시
plt.figure(figsize=(10, 4))
plt.title(stock.get_market_ticker_name("005930"))
plt.plot(df['종가'], marker='o')
plt.xlabel('Date')
plt.ylabel('Closing Price (KRW)')
plt.grid()
plt.show()

아래 코드의 marker 의 o 값은 마커로 점을 찍겠다는 의미입니다.

plt.plot(df['종가'], marker='o')

marker='*'는 별 모양 마커를, marker='s'는 사각형 마커로 표시합니다.

전체 코드는 아래와 같습니다.

from pykrx import stock
import matplotlib.pyplot as plt

# 삼성전자 종가 데이터 가져오기
df = stock.get_market_ohlcv_by_date("20231201", "20231222", "005930")
# print(df)
# 종가 데이터를 차트로 표시
plt.figure(figsize=(10, 4))
plt.title(stock.get_market_ticker_name("005930"))
plt.plot(df['종가'], marker='o')
plt.xlabel('Date')
plt.ylabel('Closing Price (KRW)')
plt.grid()
plt.show()

결과

하나의 주가 정보가 아닌 여러개의 주가정보를 표시하고 싶은 경우 아래처럼

tickers = ["005930", "000660", "051910"]

가져오고 싶은 코드를 리스트에 담고 for 문을 이용해 처리하면 됩니다.

from pykrx import stock
import matplotlib.pyplot as plt
import datetime

# 여러 주식의 티커 목록 생성
tickers = ["005930", "000660", "051910"]

# 차트 생성을 위한 준비
plt.figure(figsize=(10, 6))
plt.title("Stock Prices")
plt.xlabel('Date')
plt.ylabel('Closing Price (KRW)')

# 각 티커에 대해 반복하여 데이터 가져오기 및 차트에 표시
for ticker in tickers:
    df = stock.get_market_ohlcv_by_date("20231201", "20231222", ticker)
    plt.plot(df['종가'], label=stock.get_market_ticker_name(ticker), marker='o')

plt.legend()
plt.grid()
plt.show()

결과

범례는 plt.legend() 함수를 사용해야 표시되며  plot 함수의 label 값이 범례에 사용됩니다.

 

차트를 이미지로 저장하고 싶은 경우에는 아래와 같이 savefig 함수를 이용하면 됩니다.

plt.savefig('samsung_closing_price_chart.png')

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band