2012-04-02 12 views
5

Ho vales con una differenza molto piccola come ... 0,000001. Voglio visualizzarli su scala logaritmica. Mi chiedo come farlo in matplotlib.come visualizzare i valori su scala logaritmica su matplotalib?

Grazie mille

+0

Eventuali duplicati di [ Traccia gli assi logaritmici con matplotlib in python] (http://stackoverflow.com/questions/773814/plot-logarithmic-axes-with-matplotlib-in-python) – bluenote10

risposta

15

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axis

semplicemente aggiungere la parola chiave argomento log=True

Oppure, in un esempio:

from matplotlib import pyplot 
import math 
pyplot.plot([x for x in range(100)],[math.exp(y) for y in range(100)]) 
pyplot.xlabel('arbitrary') 
pyplot.ylabel('arbitrary') 
pyplot.title('arbitrary') 

#pyplot.xscale('log') 
pyplot.yscale('log') 

pyplot.show() 

enter image description here

1

È possibile utilizzare questo pezzo di codice:

import matplotlib.pyplot 
# to set x-axis to logscale 
matplotlib.pyplot.xscale('log') 
# to set y-axis to logscale 
matplotlib.pyplot.yscale('log') 
2

Invece di plot, è possibile utilizzare semilogy:

import numpy as npy 
import matplotlib.pyplot as plt 
x=npy.array([i/100. for i in range(100)]) 
y=npy.exp(20*x) 
plt.semilogy(x, y) 
plt.show() 

Ma io non sono del tutto sicuro che cosa sperate di ottenere da utilizzando una scala logaritmica. Quando dici "piccola differenza", intendi che i valori potrebbero essere qualcosa come 193.000001 e 193.000002? Se è così, potrebbe essere utile per sottrarre fuori 193.

3

Poiché tutte le altre risposte menzionano solo l'approccio globale pyplot.xscale("log"): È anche possibile impostarlo per asse, ma poi la sintassi è:

ax.set_yscale("log") 
Problemi correlati