J'ai finalement trouvé le temps de faire quelques expériences afin de comprendre la différence entre elles. Voici ce que j'ai découvert:
log
n'autorise que les valeurs positives et vous permet de choisir comment gérer les valeurs négatives ( mask
ou clip
).
symlog
signifie log symétrique et autorise des valeurs positives et négatives.
symlog
permet de définir une plage autour de zéro dans le graphique sera linéaire au lieu de logarithmique.
Je pense que tout deviendra beaucoup plus facile à comprendre avec des graphiques et des exemples, alors essayons-les:
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, j'ai utilisé le code suivant pour enregistrer chaque figure:
# Default dpi is 80
pyplot.savefig('matplotlib_xscale_linear.png', dpi=50, bbox_inches='tight')
N'oubliez pas que vous pouvez modifier 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 que je réponde à ma propre question, lisez ceci )
Voici un exemple de comportement lorsque symlog est nécessaire:
Tracé initial, non mis à l'échelle. Remarquez combien de points se regroupent à x ~ 0
[ '
Graphique à l'échelle du journal. Tout s'est effondré.
'
Pourquoi s'est-il effondré? En raison de certaines valeurs sur l'axe des x étant très proches ou égales à 0.
Tracé à l'échelle Symlog. Tout est comme il se doit.
la source