【Python3】Plotlyを使った折れ線グラフ作成でy軸が1つしか指定されず折れ線になりません。
解決したいこと
Python3で株価データを1年分取得、Plotlyで取得したデータから折れ線グラフを作成しようとしています。
折れ線グラフはhtmlファイルに出力されるよう設計。
コード実行後、Webサイトでファイル確認してるのですが添付画像のようになります。
発生している問題・エラー
エラーは起きず、htmlで出力まで問題なし。
生成後のグラフに課題あり。
┗y軸が問題なのか、取得した株価データがグラフ作成のコードと噛み合っていないのか、原因がわかりません。
該当するソースコード(どこが問題かわからないため全て記載)
import yfinance as yf
import plotly.graph_objects as go
# 株価データの取得(日立、1年分)
ticker = "6501.T"
data = yf.download(ticker, period="1y")
# 小数点を省いてデータを整数化
data = data.round(0).astype(int)
# 日付をリセットしてデータを整える
data.reset_index(inplace=True)
# 日付ラベルを10個ごとに取得
date_labels = data['Date'][::10].tolist()
# Plotlyでインタラクティブな折れ線グラフを作成
fig = go.Figure()
# 株価の折れ線グラフを追加
fig.add_trace(go.Scatter(
x=data['Date'], # X軸に日時
y=data['Close'], # Y軸に株価(整数化済み)
mode='lines+markers', # 折れ線+マーカー
name='Close Price',
marker=dict(size=5, color='blue'),
line=dict(color='blue', width=2)
))
# グラフのレイアウトを設定
fig.update_layout(
title=f'{ticker} Stock Prices (1 year)',
xaxis_title='Date',
yaxis_title='Close Price (JPY)',
xaxis=dict(
showgrid=True,
tickangle=45, # 日付ラベルを45度回転
type='date', # X軸を日時型として表示
tickformat='%Y-%m-%d' # 日付フォーマットを「年-月-日」に設定
),
yaxis=dict(
showgrid=True,
range=[0, 5000], # Y軸を0〜5000に固定
dtick=1000 # 1000区切りで目盛りを表示
),
template='plotly_white',
height=600,
width=1000
)
# HTMLファイルにグラフを保存
output_file = "/users/s12585/desktop/yfinance_test/interactive_chart_no_decimal2.html"
fig.write_html(output_file)
print(f"折れ線グラフがHTMLファイルに出力されました: {output_file}")
自分で試したこと
y軸の数字を株価に合わせて指定
range=[0, 5000], # Y軸を0〜5000に固定
dtick=1000 # 1000区切りで目盛りを表示
取得した株価データの不要そうな行の削除
data = data.iloc[2:].reset_index(drop=True) # 最初の2行を削除してインデックスをリセット
日付ラベルを指定した数ごとに取得
# 日付ラベルを10個ごとに取得
date_labels = data['Date'][::10].tolist()
これら試しましたがグラフは治りませんでした。
まだ知見も浅いため、お力添えお願いいたします。