Chcę wykreślić wykres z jedną osią logarytmiczną za pomocą matplotlib.
Czytałem dokumenty, ale nie mogę zrozumieć składni. Wiem, że jest to prawdopodobnie coś prostego jak 'scale=linear'
w argumentach fabularnych, ale wydaje mi się, że nie mam racji
Przykładowy program:
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()
python
matplotlib
scale
logarithm
Max Ghenis
źródło
źródło
semilogy()
. Co więcej, łatwiej jest bezpośrednio używaćpyplot.yscale()
niż używaćax.set_yscale('log')
, ponieważ nie ma potrzeby uzyskaniaax
obiektu (który nie zawsze jest natychmiast dostępny).loglog()
lub spróbuj tylko na osisemilogx()
ax
obiektu, którego można użyć,pyplot
który może dotyczyć tylko wybranych osi.Po pierwsze, miksowanie
pylab
ipyplot
kodowanie nie jest zbyt proste . Co więcej, styl pyplot jest lepszy niż użycie pylab .Oto nieco wyczyszczony kod, wykorzystujący tylko
pyplot
funkcje:Odpowiednią funkcją jest
pyplot.yscale()
. Jeśli korzystasz z wersji obiektowej, zastąp ją metodąAxes.set_yscale()
. Pamiętaj, że możesz także zmienić skalę osi X, używającpyplot.xscale()
(lubAxes.set_xscale()
).Sprawdź moje pytanie Jaka jest różnica między „log” a „symlog”? aby zobaczyć kilka przykładów skal graficznych oferowanych przez matplotlib.
źródło
pyplot.semilogy()
jest bardziej bezpośredni.Musisz po prostu użyć semilogii zamiast wykresu:
źródło
jeśli chcesz zmienić podstawę logarytmu, po prostu dodaj:
źródło
Wiem, że jest to nieco nie na temat, ponieważ niektóre komentarze wspominały, że
ax.set_yscale('log')
jest to „najładniejsze” rozwiązanie, które moim zdaniem może być obaleniem. Nie polecałbym używaniaax.set_yscale('log')
do histogramów i wykresów słupkowych. W mojej wersji (0.99.1.1) mam problemy z renderowaniem - nie jestem pewien, jak ogólny jest ten problem. Jednak zarówno bar, jak i hist mają opcjonalne argumenty, aby ustawić skalę y na log, co działa dobrze.referencje: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist
źródło
Więc jeśli po prostu używasz niewyszukanego API, tak jak ja często (często używam go w ipython), to jest to po prostu
Mam nadzieję, że to pomoże komuś, kto szuka prostej odpowiedzi! :)
źródło
Możesz użyć poniższego kodu:
źródło