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_onzum Aktivieren kleinerer Häkchen verwende, werden diese sowohl auf der x- als auch auf der y-Achse angezeigt.
Antworten:
Egal, ich habe es herausgefunden.
ax.tick_params(axis='x', which='minor', bottom=False)
MatplotlibDeprecationWarningfür die Verwendung bottom='off'. Anscheinend ax.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.
plt.axes().yaxis.set_minor_locator(MultipleLocator(5))anstatt zuerst zu initialisieren ml. Wenn Sie es wiederverwenden, mlkann dies zu schrecklichen Fehlern führen, die schwer zu finden sind. Die natürlichere Wahl könnte auch sein, AutoMinorLocatorwenn nicht etwas Bestimmtes angefordert wird.
So setzen Sie kleinere Häkchen an benutzerdefinierten Orten:
ax.set_xticks([0, 10, 20, 30], minor=True)
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)
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())
In beiden Fällen weist das resultierende Diagramm nur auf der y-Achse kleinere Häkchen auf.
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)mit plt.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()
plt.minorticks_on()