mplfinance default values rise error in plot function
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- python
- Ambito
- data-visualization
Direzione di ricerca
Inizia in plotting.py dai validator della configurazione di addplot e alines citati nel report, quindi segui come queste opzioni vengono passate a mpf.plot(). Riproduci la chiamata con entrambe le opzioni vuote e confrontala con un normale grafico a candele. Il lavoro è concluso quando una configurazione vuota di addplot e alines viene accettata senza errori dei validator e il grafico continua a essere visualizzato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi!
First of all, thank you for such useful library for plotting candles!
I'm trying to process a scenario, when addplot and alines is empty (at the present moment buys and sells lists have only one point in format ['date','price'], but it doesn't matter for question). So my function, that builds a graph is:
def mplfplotcoin(df,title,
buys=[],
sells=[],
rsi=False):
adp = []
# adding trades
if buys:
buysdf = pd.DataFrame([buys],columns=['Date', 'OpenPrice']) # when buys list consists of one point
buysdf = df.merge(buysdf,on='Date',how='left')['OpenPrice'] # left join
addbuys = mpf.make_addplot(buysdf,scatter=True,markersize=300,marker=6,color='forestgreen',alpha=0.75) # buy markers
adp.append(addbuys)
if sells:
sellsdf = pd.DataFrame([sells], columns=['Date', 'ClosePrice']) # when sells list consists of one point
sellsdf = df.merge(sellsdf,on='Date',how='left')['ClosePrice'] # left join
addsells = mpf.make_addplot(sellsdf,scatter=True,markersize=300,marker=7,color='firebrick',alpha=0.75) # sell markers
adp.append(addsells)
# adding line between trades https://github.com/matplotlib/mplfinance/blob/master/examples/using_lines.ipynb
if len(buys) == len(sells) and buys: # I know it's awful))) I'll change it later
tradeline = dict(alines=[tuple(buys),tuple(sells)],colors='lightslategray',linestyle='--',linewidths=2,alpha=0.5)
else: tradeline = None
# adding rsi
if rsi:
addrsi = mpf.make_addplot((df['rsi']),panel=1,type='line',color='orange',width=1,ylabel='rsi',ylim=(-5,105))
adp.append(addrsi)
# checking adp list
if not adp: adp = None
# drawing
mpf.plot(df,
type='candle',
style='tradingview',
volume=True,
show_nontrading=True,
addplot=adp,
alines=tradeline,
figscale=1.3,
title=title,
ylabel='USDT')
so, lines else: tradeline = None and if not adp: adp = None are like this, because I found it in your library file plottin.py:
#211 line:
'addplot' : { 'Default' : None,
'Description' : 'addplot object or sequence of addplot objects (from `mpf.make_addplot()`)',
'Validator' : lambda value: isinstance(value,dict) or (isinstance(value,list) and all([isinstance(d,dict) for d in value])) },
# 267 line:
'alines' : { 'Default' : None,
'Description' : 'Draw one or more ARBITRARY LINES anywhere on the plot, by'+
' specifying a sequence of two or more date/price pairs, or by'+
' specifying a sequence of sequences of two or more date/price pairs.'+
' May also be a dict with key `alines` (as date/price pairs described above),'+
' plus one or more of the following keys:'+
' `colors`, `linestyle`, `linewidths`, `alpha`.',
however I get errors for mpf.plot(..., addplot=adp, alines=tradeline, ...):
TypeError: kwarg "addplot" validator returned False for value: "None"
'Validator' : lambda value: isinstance(value,dict) or (isinstance(value,list) and all([isinstance(d,dict) for d in value])) },
and the same for alines parameter:
TypeError: kwarg "alines" validator returned False for value: "None"
'Validator' : lambda value: _alines_validator(value) },
If I go to plotting.py, I can't understand why error is rised, because there is only one if about addplot is None:
# 739 line
addplot = config['addplot']
if addplot is not None and ptype not in VALID_PMOVE_TYPES:
...
# and then 816 line is new condition:
# fill_between is NOT supported for external_axes_mode
# (caller can easily call ax.fill_between() themselves).
if config['fill_between'] is not None and not external_axes_mode:
...
Ok, I tried to define ptype in my code:
# checking adp list
if not adp: adp = [mpf.make_addplot(None,type='line')]
But again error:
raise TypeError('Wrong type for data, in make_addplot()')
TypeError: Wrong type for data, in make_addplot()
Please, help me to understand how to draw plot if addplot and alines (and other kwards) are empty?
- Lingua principale
- Python
- Stelle
- 4.4k
- Fork
- 678
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di matplotlib/mplfinance
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
matplotlib/mplfinance#672 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
matplotlib/mplfinance#700 ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
matplotlib/mplfinance#695 ·
-
question
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
matplotlib/mplfinance#691 · 1 commento ·
-
question
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
matplotlib/mplfinance#690 · 5 commenti ·
Tutte le issue di matplotlib/mplfinance
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
spec-kitty/spec-kitty#5319 ·
I maintainer di solito rispondono entro 1 giorno
-
backend::vllm diffusion multimodal
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
openai/openai-agents-python#5229 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno