matplotlib / matplotlib/mplfinance
Bug Report: Errors occur for NaN columns.
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 4.4k
- Forks
- 678
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
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.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con la reproducción del problema en el issue e inspecciona mplfinance/plotting.py en _addplot_columns, especialmente la llamada a np.nanmax alrededor de la línea 1108. Confirma el fallo con una columna de addplot que contenga únicamente valores NaN; se considera terminado cuando graficar esos datos ya no provoca el ValueError de reducción de tamaño cero.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- numpy, pandas, python
- Área
- data-visualization
- Tipo de issue
- Error
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 62/100