Tracer les axes logarithmiques avec matplotlib en python



Answers

Tout d'abord, il n'est pas très ordonné de mélanger le code pylab et le code pyplot . De plus, le style pyplot est préférable à l'utilisation de pylab .

Voici un code légèrement nettoyé, n'utilisant que des fonctions pyplot :

from matplotlib import pyplot

a = [ pow(10,i) for i in range(10) ]

pyplot.subplot(2,1,1)
pyplot.plot(a, color='blue', lw=2)
pyplot.yscale('log')
pyplot.show()

La fonction pertinente est pyplot.yscale() . Si vous utilisez la version orientée objet, remplacez-la par la méthode Axes.set_yscale . N'oubliez pas que vous pouvez également modifier l'échelle de l'axe X en utilisant pyplot.xscale() (ou Axes.set_xscale() ).

Vérifiez ma question Quelle est la différence entre 'log' et 'symlog'? pour voir quelques exemples des échelles de graphe que le matplotlib offre.

Question

Je veux tracer un graphique avec un axe logarithmique en utilisant matplotlib.

J'ai lu les documents, mais je n'arrive pas à comprendre la syntaxe. Je sais que c'est quelque chose de simple comme 'scale=linear' dans les arguments de l'intrigue, mais je n'arrive pas à le faire correctement

Exemple de programme:

import pylab
import matplotlib.pyplot as plt
a = [pow(10, i) for i in range(10)]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)

line, = ax.plot(a, color='blue', lw=2)
pylab.show()



Je sais que c'est un peu hors-sujet, puisque certains commentaires ont mentionné le ax.set_yscale('log') comme étant la solution la plus "gentille" que je pensais qu'une réfutation pourrait être due. Je ne recommanderais pas d'utiliser ax.set_yscale('log') pour les histogrammes et les graphiques à barres. Dans ma version (0.99.1.1), je rencontre des problèmes de rendu - je ne suis pas sûr de la façon dont ce problème est général. Cependant les deux bar et hist ont des arguments facultatifs pour définir l'échelle y à log, qui fonctionne bien.

références: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist




Donc, si vous utilisez simplement l'API non sophistiquée, comme je le suis souvent (je l'utilise beaucoup dans ipython), alors c'est simplement

yscale('log')
plot(...)

J'espère que cela aide quelqu'un qui cherche une réponse simple! :)




Related