matplotlib / matplotlib/mplfinance
Wrong location of Y-tick-labels.
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 4.4k
- Fork
- 678
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Dear Mr. Goldfarb, once again I ask for your assistance in solving a problem. I'm still working on an all in one solution, but this time it is build around mplfinance and pandas_ta. As you can see in the screen dump, this plot is based on the default style of mplfinance. But I can change it on the fly by the button 'settings'. With settings you can choose out all the mplfinance types and styles. It is too hard to discus at once all the options i wrote so far. But it is interactive and based on tkinter and TkAgg or Agg backend.
The problem:
Adding a secondary Yaxis on the first plot of mplfinance 'the date-price plot'. The secondary Y-axis contain the fibonacci levels and the values feeded by a dict. As you can see the lines will be plot correct, no problem. The major failure is that the Y-tick-labels don't follow the Y- ticks. The tick-labels always will be plotted on de opposite site of the Y-ticks. Whatever I try. The 'twinx' is not a solution because it block the cursor acces to the first plot axes[0] the 'date-price plot', for a dark reason. I don't offer the cursor for it, because it works fast and fine. It plot the date and price value left on the bottom toolbar. The minor problem after adding the fibonacci levels, the grid of the price ticks will be lost. Below you will find the function how I plot the fibonacci lines and config of the secondary Y-axis. I will hope You will and can help me ? Many thanks in advance.
def set_fibs():
global fib, axes
bolds = ['0.0', '100.0', '200.0', '300.0', '400.0', '500.0', '600.0', '700.0', '800.0', '900.0']
yliFor = []
yliLoc = []
limit = axes[0].get_ylim()
y2 = axes[0].secondary_yaxis('left')
y2.set_ylim(limit[0], limit[1])
for k, v in fib.items():
if v <= limit[1] and v >= limit[0]:
tmp = k + ': ' + "{:.3f}".format(v)
yliFor.append(tmp)
yliLoc.append(v)
if any(sb in k for sb in bolds):
axes[0].axhline(v, linestyle='solid', color='brown', lw=0.9, label=k)
else:
if 'Fs' in k:
axes[0].axhline(v, linestyle='dashed', color='orange', lw=0.5, label=k)
else:
axes[0].axhline(v, linestyle='dashed', color='brown', lw=0.5, label=k)
y2.axes.set_yticks(yliLoc)
y2.axes.yaxis.set_ticklabels(yliFor, fontsize=8, color='brown')
for it in y2.get_yticklabels():
txt = it.get_text()
if 'Fs' in txt:
it.set_color('orange')
y2.set_ylabel('Fibonacci', color='brown')
return

Guida per i contributori
Apri la guida per i contributori
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.
Direzione di ricerca
Inizia riproducendo il comportamento segnalato della funzione set_fibs() nell’issue, in particolare axes[0].secondary_yaxis('left') e la configurazione delle etichette dei tick, usando lo screenshot collegato e data.zip. Il lavoro sarebbe completato quando si sarà determinato se le etichette dell’asse Y secondario possono essere allineate ai relativi tick senza perdere la griglia dei prezzi principale; non viene indicato alcun file del repository né alcun test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- matplotlib, python
- Ambito
- data-visualization
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100