788 Stimmen

Ändern der Tickfrequenz auf der x- oder y-Achse

Ich versuche zu reparieren, wie Python meine Daten aufzeichnet. Sagen wir:

x = [0,5,9,10,15]
y = [0,1,2,3,4]

matplotlib.pyplot.plot(x,y)
matplotlib.pyplot.show()

Die Ticks der X-Achse werden in 5er-Intervallen aufgetragen. Gibt es eine Möglichkeit, Intervalle von 1 darzustellen?

6voto

Piyush Gupta Punkte 251
xmarks=[i for i in range(1,length+1,1)]

plt.xticks(xmarks)

Das hat bei mir funktioniert

wenn Sie Ticks zwischen [1,5] (1 und 5 einschließlich) wünschen, ersetzen Sie

length = 5

6voto

kmario23 Punkte 49380

Seit Keine der oben genannten Lösungen für meinen Anwendungsfall funktionierte, biete ich hier eine Lösung mit None (Wortspiel!), die an eine Vielzahl von Szenarien angepasst werden kann.

Hier ist ein Beispiel für einen Code, der unübersichtliche Häkchen auf beiden Seiten erzeugt X y Y Achsen.

# Note the super cluttered ticks on both X and Y axis.

# inputs
x = np.arange(1, 101)
y = x * np.log(x) 

fig = plt.figure()     # create figure
ax = fig.add_subplot(111)
ax.plot(x, y)
ax.set_xticks(x)        # set xtick values
ax.set_yticks(y)        # set ytick values

plt.show()

Jetzt bereinigen wir das Durcheinander mit einem neuen Diagramm, das nur einen spärlichen Satz von Werten auf der x- und y-Achse als Ticks anzeigt.

# inputs
x = np.arange(1, 101)
y = x * np.log(x)

fig = plt.figure()       # create figure
ax = fig.add_subplot(111)
ax.plot(x, y)

ax.set_xticks(x)
ax.set_yticks(y)

# which values need to be shown?
# here, we show every third value from `x` and `y`
show_every = 3

sparse_xticks = [None] * x.shape[0]
sparse_xticks[::show_every] = x[::show_every]

sparse_yticks = [None] * y.shape[0]
sparse_yticks[::show_every] = y[::show_every]

ax.set_xticklabels(sparse_xticks, fontsize=6)   # set sparse xtick values
ax.set_yticklabels(sparse_yticks, fontsize=6)   # set sparse ytick values

plt.show()

Je nach Anwendungsfall kann man den obigen Code anpassen, indem man einfach die show_every und verwenden Sie diese für das Sampling von Tick-Werten für X oder Y oder beide Achsen.

Wenn diese auf der Schrittweite basierende Lösung nicht passt, dann kann man auch die Werte von sparse_xticks o sparse_yticks in unregelmäßigen Abständen, wenn dies gewünscht ist.

1voto

Ahmad Punkte 7195

Sie können die Etiketten in einer Schleife durchgehen und die gewünschten ein- oder ausblenden:

   for i, label in enumerate(ax.get_xticklabels()):
        if i % interval != 0:
            label.set_visible(False)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X