Mam vales z bardzo małą różnicą jak ... 0.000001. Chcę wizualizować je na skali logarytmicznej. Zastanawiam się, jak to zrobić w matplotlib.jak wizualizować wartości w skali logarytmicznej na matplotalib?
Thanks a lot
Mam vales z bardzo małą różnicą jak ... 0.000001. Chcę wizualizować je na skali logarytmicznej. Zastanawiam się, jak to zrobić w matplotlib.jak wizualizować wartości w skali logarytmicznej na matplotalib?
Thanks a lot
http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axis
Wystarczy dodać argument słowa kluczowego log=True
Lub, w przykładzie:
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()
Można użyć tego kawałka kod:
import matplotlib.pyplot
# to set x-axis to logscale
matplotlib.pyplot.xscale('log')
# to set y-axis to logscale
matplotlib.pyplot.yscale('log')
Zamiast plot
, można użyć 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()
Ale nie jestem do końca pewien, co masz nadzieję zyskać stosując skalę dziennika. Kiedy mówisz "mała różnica", masz na myśli, że wartości mogą wynosić 193.000001 i 193.000002? Jeśli tak, to może pomóc, aby odjąć od 193.
Ponieważ wszystkie inne odpowiedzi wspomnieć tylko globalną pyplot.xscale("log")
podejście: Można również ustawić go na oś, ale składnia jest:
ax.set_yscale("log")
Możliwy duplikat [ Utwórz logarytmiczne osie z matplotlib w pythonie] (http://stackoverflow.com/questions/773814/plot-logarithmic-axes-with-matplotlib-in-python) – bluenote10