見出し画像

【Python】グラフを重ねて表示するツール

株価・価格の推移について、正の相関や逆の相関を確認するために、2つのグラフを重ねて表示したいことがある。しかし、増加率が違うので、軸を分けたい。

しかし、この作業が、そこそこめんどくさい。

というわけで、右と左で2軸に分けて、グラフを重ねて表示するテンプレートを用意しました。

良かったら、下記のティッカーを変更して使ってみてください。
(もしくは、データフレームにデータを格納する部分から変更)

codelist = ["BTC-USD","GLD"]

コード全体は下記の通り。

# !pip install yfinance
import pandas as pd
import datetime
import yfinance as yf
import matplotlib.pyplot as plt
from matplotlib import cm
%matplotlib inline

# 表示期間
start = datetime.date.today() - datetime.timedelta(days=180)
end = datetime.date.today()

# 表示対象
codelist = ["BTC-USD","GLD"]

# データ取得
data_stock = yf.download(codelist, start=start, end=end)["Adj Close"]
fig, ax1 = plt.subplots(figsize=(8, 4.5),facecolor="white")

# ax1とax2を関連させる
ax2 = ax1.twinx()

# 1つ目のデータをグラフ化
ax1.plot(data_stock[codelist[0]].dropna(),
color="blue", label=codelist[0],linewidth=2,alpha=0.5)

# 2つ目のデータをグラフ化
ax2.plot(data_stock[codelist[1]].dropna(),
color="red", label=codelist[1],linewidth=2,alpha=0.5)

# 凡例
handler1, label1 = ax1.get_legend_handles_labels()
handler2, label2 = ax2.get_legend_handles_labels()

# 凡例をまとめて出力
ax1.legend(handler1 + handler2, label1 + label2, loc=2, borderaxespad=0.5)

# 軸を45度傾けて表示
ax1.tick_params(axis='x', labelrotation=45)

plt.show()

# ここまで

実行すると、下記のようなグラフが出力されます。

画像1

これをみると、ビットコインとゴールドの相関関係が1月を転機にして逆相関になっているようにみえますね。

何かの参考になれば幸いです。

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?