Wie kann ich die kleinen Häkchen nur auf der y-Achse in einem linearen oder linearen Diagramm drehen?
Wenn ich die Funktion minor_ticks_on
zum Aktivieren kleinerer Häkchen verwende, werden diese sowohl auf der x- als auch auf der y-Achse angezeigt.
python
matplotlib
emad
quelle
quelle
plt.minorticks_on()
Antworten:
Egal, ich habe es herausgefunden.
ax.tick_params(axis='x', which='minor', bottom=False)
quelle
MatplotlibDeprecationWarning
für die Verwendungbottom='off'
. Anscheinendax.tick_params(axis='x',which='minor',bottom=False)
sollte stattdessen verwendet werden.Hier ist eine andere Möglichkeit, die ich in der matplotlib-Dokumentation gefunden habe :
import numpy as np from matplotlib import pyplot as plt from matplotlib.ticker import MultipleLocator a = np.arange(100) ml = MultipleLocator(5) plt.plot(a) plt.axes().yaxis.set_minor_locator(ml) plt.show()
Dadurch werden kleinere Häkchen nur auf der y-Achse platziert, da kleinere Häkchen standardmäßig deaktiviert sind.
quelle
plt.axes().yaxis.set_minor_locator(MultipleLocator(5))
anstatt zuerst zu initialisierenml
. Wenn Sie es wiederverwenden,ml
kann dies zu schrecklichen Fehlern führen, die schwer zu finden sind. Die natürlichere Wahl könnte auch sein,AutoMinorLocator
wenn nicht etwas Bestimmtes angefordert wird.So setzen Sie kleinere Häkchen an benutzerdefinierten Orten:
ax.set_xticks([0, 10, 20, 30], minor=True)
quelle
Um die Vorgehensweise bei der Antwort von @ emad zu verdeutlichen, werden folgende Schritte ausgeführt, um kleinere Häkchen an den Standardpositionen anzuzeigen:
Ein minimales Beispiel:
import matplotlib.pyplot as plt fig, ax = plt.subplots() plt.plot([1,2]) # Currently, there are no minor ticks, # so trying to make them visible would have no effect ax.yaxis.get_ticklocs(minor=True) # [] # Initialize minor ticks ax.minorticks_on() # Now minor ticks exist and are turned on for both axes # Turn off x-axis minor ticks ax.xaxis.set_tick_params(which='minor', bottom=False)
Alternative Methode
Alternativ können wir kleinere Häkchen an Standardpositionen erhalten, indem wir
AutoMinorLocator
:import matplotlib.pyplot as plt import matplotlib.ticker as tck fig, ax = plt.subplots() plt.plot([1,2]) ax.yaxis.set_minor_locator(tck.AutoMinorLocator())
Ergebnis
In beiden Fällen weist das resultierende Diagramm nur auf der y-Achse kleinere Häkchen auf.
quelle
Auch wenn Sie nur auf dem tatsächlichen y-Achse kleinere Zecken wollen, anstatt auf den linken und rechten Seiten des Graphen, können Sie die folgen
plt.axes().yaxis.set_minor_locator(ml)
mitplt.axes().yaxis.set_tick_params(which='minor', right = 'off')
, etwa so:import numpy as np from matplotlib import pyplot as plt from matplotlib.ticker import MultipleLocator a = np.arange(100) ml = MultipleLocator(5) plt.plot(a) plt.axes().yaxis.set_minor_locator(ml) plt.axes().yaxis.set_tick_params(which='minor', right = 'off') plt.show()
quelle