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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

3097閲覧

Pandasに入れた五分足のデータからローソク足チャートを作りたい。

Aki1000

総合スコア78

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/02/11 05:03

編集2021/02/11 05:17

いくつかのホームページを見て書いてみましたが、うまくいきません

下のコードでpandas dataframeのdfには日付をindexでdatetimeとしてopen, high, low, close, volumeがfloatとして入ることとします。
indexに2020/02/10 13:35の形式で時間が入っていて、どdf['date'] = df.indexで追加したdateカラムが最後のカラムに入りました。この追加したdateカラムはdatetime64[ns]というtypeになっていました。。

実行すると
TypeError: unsupported operand type(s) for -: 'Timestamp' and 'float'となります。

Python

1import pandas as pd 2import matplotlib.pyplot as plt 3import numpy as np 4from mpl_finance import candlestick_ohlc 5 6 df = get_price_dataframe(db_file_name, code) 7 df = f.loc[:, ['open', 'high', 'low', 'close', 'volume']].sort_values('date') 8 9 df['date'] = df.index 10 print(df["date"].dtypes) 11 12 fig, ax = plt.subplots(figsize=(10, 5)) 13 df = df[["date", "open", "high", "low", "close"]] 14 15 candlestick_ohlc(ax, df.values, colorup="green", colordown="red") 16 plt.show() 17

うまくローソク足がプロットできるなら上記コードにはこだわりはありません。というかmpl_financeは古くて、mplfinanceにした方が良いような事を書いてあるホームページもありましたが、mplfinanceではもっと訳が分からない感じにエラーが出て、うまく表示できませんでした……。

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

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

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

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

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

Daregada

2021/02/11 06:51

> mplfinanceではもっと訳が分からない感じにエラーが出て、うまく表示できませんでした……。 具体的なエラーを書いてください。
guest

回答2

0

ベストアンサー

mpl-financeのcandlestick_ohlcに渡す日時はdatetime64[ns](各要素はTimestamp)ではダメで、質問文のエラーはそれが原因。

Timestamp型のデータを西暦0001-01-01からの経過日数に直す必要がある。それには関数matpltlib.dates.date2numを使うので、import matplotlib.dates as mdatesとでもしておいて、

Diff

1-df['date'] = df.index 2+df['date'] = mdates.date2num(df.index)

のようにすればいい。

と、一応やってみたんだけど面倒すぎるので、mplfinanceに移行することをお薦めする。

おそらく質問者がデータベースから読んでいるのと同型式と思われるCSVファイルを用意し、ローソク足グラフを表示するためのコードがこちら。

Python

1import pandas as pd 2import mplfinance as mpf 3import matplotlib.pyplot as plt 4 5df = pd.read_csv('mplfinance_sample.csv', index_col=0, parse_dates=[0]) 6mpf.plot(df, type="candle", figratio=(10, 5)) 7plt.show()

投稿2021/02/11 07:07

編集2021/02/12 01:12
Daregada

総合スコア11990

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

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

0

python

1 tmp = df['date'].values.astype('datetime64[D]') #精度を日単位まで落としてみた 2 df['date'] = tmp.astype(float)

これを
df['date'] = df.index
の後に挿入したらエラー消えました。floatに変換しないといけないみたいです。
しかし、x軸は変な実数になってるし、全然五分足にならない……

投稿2021/02/11 06:09

編集2021/02/11 06:23
Aki1000

総合スコア78

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問