python matplotlibを使って株価データをグラフ化

Python

前回の記事でyfinanceを使って株価データを取得しました
今回は取得した株価データをmatplotlibを使ってグラフ化してみたいと思います
株価データの取得方法については前回の記事を参考にしてください

・環境

windows11
yfinance 0.2.51
matplotlib 3.10.0

・ライブラリのインストール

pip install yfinance matplotlib

・特定の日の日経平均株価を取得、グラフ化

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams
from datetime import datetime, timedelta

# 日経平均株価のティッカーシンボル
ticker_symbol = "^N225"

# 取得したい日付を入力
input_date = input("株価を取得したい日付を入力してください(YYYY-MM-DD形式): ")

# 日付が正しいかチェック、当日と翌日を計算
try:
    start_date = datetime.strptime(input_date, '%Y-%m-%d')
    end_date = start_date + timedelta(days=1)
except ValueError:
    print("日付が正しくありません。YYYY-MM-DD形式で入力してください。")
    exit()

# 指定した日付のデータを取得
ticker = yf.Ticker(ticker_symbol)
data = ticker.history(start=start_date, end=end_date, interval="1m")

# 日本語フォントを指定
rcParams['font.family'] = 'Meiryo'

# 株価データが存在するか確認
if not data.empty:
    # タイムゾーンを日本時間に変換
    data.index = data.index.tz_convert('Asia/Tokyo')
    
    # プロット
    plt.figure(figsize=(12, 6))
    plt.plot(data.index, data['Close'], label='日経平均株価')
    plt.xlabel('時間')
    plt.ylabel('株価(円)')
    plt.title(f'{start_date}の日経平均株価')
    plt.legend()
    plt.grid(True)
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig('日経平均株価.png', dpi=100, bbox_inches='tight', facecolor='w')
    plt.show()

else:
    print(f"{input_date} のデータが取得できませんでした")

コードの詳細を解説していきます

・日付の入力、翌日の日付を取得

input_date = input(“株価を取得したい日付を入力してください(YYYY-MM-DD形式): “)
まず特定の日付を入力します
YYYY-MM-DD形式で入力し変数に格納します

start_date = datetime.strptime(input_date, ‘%Y-%m-%d’)
入力した日付をdatetime型変数に変換します

end_date = target_date + timedelta(days=1)
timedelta関数を使って1日追加して翌日の日付を取得します

入力したデータが日付でない場合はエラーメッセージを出力します

次にグラフ描画部分の解説をしていきます

・matplotlibを使ったグラフの描画

rcParams[‘font.family’] = ‘Meiryo’
rcParamsは、matplotlibのさまざまな設定を管理するための辞書型のデータで、これによりフォント等の設定を管理できます
font.family以外にも、font.size(フォントのサイズ)、font.weight(フォントの太さ)など、フォントに関連する設定を変更することができます


plt.figure(figsize=(12, 6))
グラフのサイズを設定します(幅12インチ、高さ6インチ)

plt.plot(data.index, data[‘Close’], label=’日経平均株価’)
グラフにプロットします
X軸に株価データのインデックス(時間)、Y軸を終値として、ラベルは日経平均株価とします

plt.xlabel(‘時間’)
X軸のラベルを時間に設定します

plt.ylabel(‘株価’)
Y軸のラベルを株価に設定します

plt.title(‘昨日の一日の日経平均株価’)
グラフのタイトルを設定します

plt.legend()
グラフ内に、plt.plotでラベルに設定した凡例を表示します
複数のプロットがある場合に、それぞれのプロットが何を表しているかを示します

plt.grid(True)
グリッドを表示します plt.grid(True)(表示)または plt.grid(False)(非表示)
X軸のグリッド線を表示:plt.grid(axis=’x’)
Y軸のグリッド線を表示:plt.grid(axis=’y’)

plt.xticks(rotation=45)
X軸の目盛りのラベルを45度回転します
メモリが細かい場合、見やすくなります

plt.tight_layout()
グラフのレイアウトを自動調整してくれます

plt.savefig(‘昨日の日経平均株価.png’, dpi=300, bbox_inches=’tight’, facecolor=’w’)
グラフを画像として保存します
dpi=300:dpiを300に指定
bbox_inches=’tight’:グラフの余白を設定
facecolor=’w’:背景色を設定

plt.show()
グラフを表示します

以下のようなグラフが取得できます

コメント