J'ai finalement trouvé le temps de faire quelques expériences afin de comprendre la différence entre eux. Voici ce que j'ai découvert:
- ne permet
log
des valeurs positives, et vous permet de choisir comment gérer les effets négatifs (mask
ou clip
).
symlog
signifie log symétrique, et permet des valeurs positives et négatives.
symlog
permet de définir une plage autour de zéro dans le tracé sera linéaire au lieu de logarithmique.
Je pense que tout ira beaucoup plus facile à comprendre avec des graphiques et des exemples, donc nous allons les essayer:
import numpy
from matplotlib import pyplot
# Enable interactive mode
pyplot.ion()
# Draw the grid lines
pyplot.grid(True)
# Numbers from -50 to 50, with 0.1 as step
xdomain = numpy.arange(-50,50, 0.1)
# Plots a simple linear function 'f(x) = x'
pyplot.plot(xdomain, xdomain)
# Plots 'sin(x)'
pyplot.plot(xdomain, numpy.sin(xdomain))
# 'linear' is the default mode, so this next line is redundant:
pyplot.xscale('linear')

# How to treat negative values?
# 'mask' will treat negative values as invalid
# 'mask' is the default, so the next two lines are equivalent
pyplot.xscale('log')
pyplot.xscale('log', nonposx='mask')

# 'clip' will map all negative values a very small positive one
pyplot.xscale('log', nonposx='clip')

# 'symlog' scaling, however, handles negative values nicely
pyplot.xscale('symlog')

# And you can even set a linear range around zero
pyplot.xscale('symlog', linthreshx=20)

Juste pour être complet, je l'ai utilisé le code suivant pour enregistrer chaque chiffre:
# Default dpi is 80
pyplot.savefig('matplotlib_xscale_linear.png', dpi=50, bbox_inches='tight')
Rappelez-vous que vous pouvez changer la taille de la figure en utilisant:
fig = pyplot.gcf()
fig.set_size_inches([4., 3.])
# Default size: [8., 6.]
(Si vous n'êtes pas sûr de me répondre à ma propre question, lisez this)
Eh bien ... Je l'ai lu, mais je ne sais toujours pas quand je devrais utiliser un ou l'autre. J'attendais une sorte d'exemple graphique pour que je puisse réellement ** voir ** quel est le problème que * symlog * essaie de résoudre. –