質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1942閲覧

株価の日付表示の仕方(グラフのx軸)

xkx

総合スコア13

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/08/01 23:48

python

1import pandas as pd 2import matplotlib.pyplot as plt 3import mpl_finance as mpf 4 5 6def main():#ローソク足表示プログラム 7 df = pd.read_csv('6502_2018.csv', encoding='Shift_JIS', na_values='--',header=1)#'6502_2018.csv'は個別銘柄のデータが入ったcsvファイルです. 8 df.columns=["Date", "Open", "High", "Low", "Close", "Volume", "Trading Value"] 9 10 fig = plt.figure() 11 ax = plt.subplot(1, 1, 1) 12 # candlestick2を使って描画 13 mpf.candlestick2_ohlc(ax, df["Open"], df["High"], df["Low"], df["Close"], 14 width=0.9, colorup="b", colordown="r") 15 16 plt.tight_layout() 17 plt.show() 18 19if __name__ == '__main__': 20 main()

このままだとx軸がよくわからない数字のみで表現されているので,日付に変更したいです.また月単位で表示する場合のこともわからないので教えてくださると助かります.
よろしくお願いします.
また,株価分析をpythonでしている方がいたらどういう勉強をしていくといいのかアドバイスをくださるととても嬉しいです.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

現在、グラフを mpf.candlestick2_ohlc() にて描画しているようですが、mpf.candlestick_ohlc()を使って日時データも一緒に引数に渡してあげると良いのではないでしょうか。

その際に渡す 日時データは matplotlib.dates.date2num() にて数値型に変換する必要がありますのでご注意ください

その上で、X軸の LocatorFormatter をを時系列用のものを設定することで X軸のラベルを日付にすることができるかと思います。

以下は candlestick_ohlc() を使用したサンプルです。

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3import matplotlib.dates as mdates 4import mpl_finance as mpf 5 6def main(): 7 df = pd.read_csv('6502_2018.csv', encoding='Shift_JIS', na_values='--',header=1) 8 df.columns = ["Date", "Open", "High", "Low", "Close", "Volume", "Trading Value"] 9 10 # "Date"列を数値型に変換 11 df["Date"] = mdates.date2num(df["Date"]) 12 13 fig = plt.figure() 14 ax = plt.subplot(1, 1, 1) 15 # candlestickを使って描画 16 mpf.candlestick_ohlc(ax, df[["Date", "Open", "High", "Low", "Close"]].values, width=0.9, colorup="b", colordown="r") 17 # 時系列用のLocator/Formatterを使用 18 ax.xaxis.set_major_locator(mdates.DayLocator(interval=5))  19 ax.xaxis.set_major_formatter(mdates.DateFormatter('%m/%d')) 20 plt.tight_layout() 21 plt.show()

【補足】

上記の説明は Date列DateTime型であることを前提としております。
その為、最初に
print(df.dtypes)
などでData列の型を確認し、Data列の型がobject型である場合は
df["Date"] = mdates.date2num(df["Date"])
の前に
df["Date"] = pd.to_datetime(df["Date"])
などの処理を行いDatetime型にしておいてください。

投稿2018/08/02 03:30

編集2018/08/02 03:56
magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xkx

2018/08/02 06:32

丁寧な回答ありがとうございます. Data列の型が良く分からなかったので,解説のおかげでとても助かりました. csvのデータが1年分ですので月単位にしないとx軸が見えなくなってしまうため月単位に変更する方法のアドバイスがあれば教えていただきたいです.
xkx

2018/08/02 06:56

ax.xaxis.set_major_locator(mdates.DayLocator(interval=5))のintervalを変えればできました. ありがとうございました.
xkx

2018/08/02 07:15

わざわざありがとうございます! 参考にさせてもらいます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問