Ich möchte mit matplotlib ein Diagramm mit einer logarithmischen Achse zeichnen.
Ich habe die Dokumente gelesen, kann aber die Syntax nicht herausfinden. Ich weiß, dass es wahrscheinlich so einfach ist wie 'scale=linear'
in den Handlungsargumenten, aber ich kann es nicht richtig machen
Beispielprogramm:
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
quelle
quelle
semilogy()
. Darüber hinaus ist die direkte Verwendung einfacherpyplot.yscale()
als die Verwendungax.set_yscale('log')
, da dasax
Objekt nicht abgerufen werden muss (was nicht immer sofort verfügbar ist).loglog()
oder versuchen Sie es nur auf der x-Achsesemilogx()
ax
Objekt zu verwenden,pyplot
das möglicherweise nur für die gewünschten Achsen gilt.Erstens ist es nicht sehr ordentlich zu mischen
pylab
und zupyplot
codieren. Was mehr ist, wird pyplot Stil gegenüber der Verwendung pylab bevorzugt .Hier ist ein leicht bereinigter Code, der nur
pyplot
Funktionen verwendet:Die relevante Funktion ist
pyplot.yscale()
. Wenn Sie die objektorientierte Version verwenden, ersetzen Sie sie durch die MethodeAxes.set_yscale()
. Denken Sie daran, dass Sie den Maßstab der X-Achse auch mitpyplot.xscale()
(oderAxes.set_xscale()
) ändern können .Überprüfen Sie meine Frage Was ist der Unterschied zwischen 'log' und 'symlog'? um einige Beispiele für die von matplotlib angebotenen Diagrammskalen zu sehen.
quelle
pyplot.semilogy()
ist direkter.Sie müssen lediglich die Semilogie anstelle der Handlung verwenden:
quelle
Wenn Sie die Basis des Logarithmus ändern möchten, fügen Sie einfach Folgendes hinzu:
quelle
Ich weiß, dass dies etwas vom Thema abweicht, da in einigen Kommentaren die
ax.set_yscale('log')
"schönste" Lösung erwähnt wurde, von der ich dachte, dass eine Widerlegung fällig sein könnte. Ich würde die Verwendung nicht empfehlenax.set_yscale('log')
für Histogramme und Balkendiagramme zu verwenden. In meiner Version (0.99.1.1) habe ich einige Rendering-Probleme - ich bin mir nicht sicher, wie allgemein dieses Problem ist. Sowohl bar als auch hist haben jedoch optionale Argumente, um die y-Skala auf log zu setzen, was gut funktioniert.Referenzen: http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.bar
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist
quelle
Wenn Sie also einfach die nicht anspruchsvolle API verwenden, wie ich es oft bin (ich verwende sie häufig in Ipython), dann ist dies einfach
Hoffe das hilft jemandem, der nach einer einfachen Antwort sucht! :).
quelle
Sie können den folgenden Code verwenden:
quelle