matplotlib / matplotlib/mplfinance
Bug Report: Errors occur for NaN columns.
まだ誰も着手していません。
- 主要言語
- Python
- スター
- 4.4k
- フォーク
- 678
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
issue case
When animating over a limited visual range, as in this example, the possibility arises that the signal columns are all NaN.
https://github.com/matplotlib/mplfinance/assets/37892107/a5afea85-57ce-4282-ad7c-955240c54787
issue
mplfinance\plotting.py", line 1108, in _addplot_columns
ymhi = math.log(max(math.fabs(np.nanmax(yd)),1e-7),10)
This Numpy code generates an error.
"ValueError: zero-size array to reduction operation maximum which has no identity"
Error reproduction
import datetime
import numpy as np
import pandas as pd
import mplfinance as mpf
# ランダムなOHLCデータを生成する関数
def generate_sample_ohlc_data(n=10):
# 現在の日付を取得
base_date = datetime.datetime.now()
# 日付のリストを生成
dates = [base_date - datetime.timedelta(days=i) for i in range(n)]
dates.reverse()
# ランダムな価格データを生成
rand = np.random.default_rng().uniform
open = [100]
high = [100.02]
low = [100.02]
close = [100.05]
for i in range(n-1):
open.append(close[i])
close.append(open[-1] + rand(-0.1, 0.1))
high.append(max(open[-1],close[-1]) + rand(0, 0.05))
low.append(min(open[-1],close[-1]) - rand(0, 0.05))
# DataFrameに格納
ohlc_data = pd.DataFrame({
"date": dates,
"open": open,
"high": high,
"low": low,
"close": close
})
return ohlc_data.set_index("date", drop=True)
period_range = 50
df = generate_sample_ohlc_data(period_range)
df["signal"] = np.nan
print(df)
some_signal = mpf.make_addplot(df["signal"])
mpf.plot(df, type='candle', addplot=some_signal) # ValueError
Currently, we have worked around this by doing NaN pre-checking on the user side, but it would be great if the library could handle this.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
issue の再現から始め、mplfinance/plotting.py の _addplot_columns、特に 1108 行付近の np.nanmax 呼び出しを調査します。NaN 値のみを含む addplot 列で失敗を確認します。完了条件は、そのデータをプロットしてもサイズ 0 のリダクションに関する ValueError が発生しなくなることです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- numpy, pandas, python
- 領域
- data-visualization
- issue の種類
- バグ
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 活発さ
- 停滞
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 62/100