Blenden Sie die Achsenwerte aus, aber behalten Sie die Beschriftungen der Achsenmarkierungen in matplotlib bei

101

Ich habe dieses Bild:

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

Geben Sie hier die Bildbeschreibung ein

Ich möchte die Zahlen verbergen. wenn ich benutze:

plt.axis('off')

... ich bekomme dieses Bild:

Geben Sie hier die Bildbeschreibung ein

Es verbirgt auch die Beschriftungen Vund t. Wie kann ich die Beschriftungen behalten, während ich die Werte verstecke?

Luis Ramon Ramirez Rodriguez
quelle

Antworten:

136

Wenn Sie den objektorientierten Ansatz von matplotlib verwenden , ist dies eine einfache Aufgabe mit ax.set_xticklabels()und ax.set_yticklabels():

import matplotlib.pyplot as plt

# Create Figure and Axes instances
fig,ax = plt.subplots(1)

# Make your plot, set your axes labels
ax.plot(sim_1['t'],sim_1['V'],'k')
ax.set_ylabel('V')
ax.set_xlabel('t')

# Turn off tick labels
ax.set_yticklabels([])
ax.set_xticklabels([])

plt.show()
tmdavison
quelle
11
Funktioniert hervorragend zum Entfernen von Häkchen, aber Sie erhalten immer noch die Häkchen ...
Andrew Schreiber
85

Ohne a subplotskönnen Sie die Zecken universell wie folgt entfernen:

plt.xticks([])
plt.yticks([])
Noel Evans
quelle
44

Das funktioniert super. Fügen Sie dies einfach vor plt.show():

plt.gca().axes.get_yaxis().set_visible(False)

Boom.

MRT
quelle
2
Danke, das funktioniert super. In den anderen Fällen bleiben Ticks erhalten (da die Tick-Richtung standardmäßig
deaktiviert
Im Gegensatz zu Antworten wie ax.set_xticklabels ([]) funktioniert diese perfekt für den folgenden Fall: Man verwendet Unterzeichnungen mit der Option sharex und möchte Ticks nur für eine der Unterzeichnungen löschen.
16аил Лисаков
Toll! Und plt.gca (). Axes.get_xaxis (). Set_visible (False), um auch die Beschriftungen und Häkchen der x-Achse zu entfernen.
fbparis
1
oder wenn Sie bereits das ax.xaxis.set_visible(False)
Axtobjekt
1
@filip Ich bin froh, dass es geholfen hat :)
MRT
3

Ich bin mir nicht sicher, ob dies der beste Weg ist, aber Sie können die Häkchen wie folgt ersetzen:

import matplotlib.pyplot as plt
x = range(10)
y = range(10)
plt.plot(x,y)
plt.xticks(x," ")
plt.show()

In Python 3.4 wird dadurch ein einfaches Liniendiagramm ohne Häkchen auf der x-Achse generiert. Ein einfaches Beispiel finden Sie hier: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

Diese verwandte Frage enthält auch einige bessere Vorschläge: Ausblenden des Achsentextes in Matplotlib-Plots

Ich bin neu in Python. Ihr Kilometerstand kann in früheren Versionen variieren. Vielleicht können andere helfen?

Joe Gavin
quelle
2

Um Häkchen vollständig zu entfernen, verwenden Sie:

ax.set_yticks([])
ax.set_xticks([])

sonst ax.set_yticklabels([])und ax.set_xticklabels([])halten tickmarks wird.

Ruslan S.
quelle
Wenn ich es versuche ax.set_yticks([], []), erhalte ich die folgende Warnung: "MatplotlibDeprecationWarning: Die Übergabe des Nebenparameters set_xticks () in Position ist seit Matplotlib 3.2 veraltet. Der Parameter wird zwei Nebenversionen später nur noch mit Schlüsselwörtern versehen." Was ist die richtige Alternative?
Rylan Schaeffer
@RylanSchaeffer, in Ihrem Beispiel übergeben ax.set_yticks([], [])Sie 2 leere Listen, was zu Fehlern führt. Warum das tun? Siehe die Bedienungsanleitung. Wenn das erste Argument nicht positionell übergeben werden soll, übergeben Sie es mit dem Schlüsselwort : ax.set_yticks(ticks=[]).
Ruslan S.
0

plt.gca().axes.yaxis.set_ticklabels([])

Geben Sie hier die Bildbeschreibung ein

Nic Scozzaro
quelle