Uso la scala symlog di matplotlib per coprire un ampio intervallo di parametri che si estendono sia in direzione positiva che negativa. Sfortunatamente, la scala symlog non è molto intuitiva e probabilmente anche non molto usata. Pertanto, mi piacerebbe rendere più evidente lo scaling utilizzato posizionando tick minori tra i tick principali. Sulla parte di registro della scala, voglio posizionare le zecche a [2,3, ..., 9] * 10^e dove e
è il segno di spunta maggiore vicino. Inoltre, l'intervallo tra 0 e 0,1 dovrebbe essere coperto con zecche minori posizionate in modo uniforme, che dovrebbero essere a 0,01. Ho provato ad utilizzare il matplotlib.ticker API per arrivare a tali zecche utilizzando il seguente codice:Come posizionare tick secondari sulla scala di symlog?
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import LogLocator, AutoLocator
x = np.linspace(-5, 5, 100)
y = x
plt.plot(x, y)
plt.yscale('symlog', linthreshy=1e-1)
yaxis = plt.gca().yaxis
yaxis.set_minor_locator(LogLocator(subs=np.arange(2, 10)))
plt.show()
Purtroppo, questo non produce quello che voglio:
Nota che ci sono modo per molte zecche minori intorno a 0, che sono probabilmente dovuti allo LogLocator
. Inoltre, non ci sono segni secondari secondari sull'asse negativo.
Nessun segno di spunta minore viene visualizzato se utilizzo e AutoLocator
. Lo AutoMinorLocator
supporta solo assi in scala uniforme. La mia domanda quindi è come ottenere il piazzamento desiderato?
Potrebbe aprire un PR in upstream per aggiungere questo al codebase mpl? – tacaswell