Ukryj wartości osi, ale zachowaj etykiety znaczników osi w matplotlib

101

Mam ten obraz:

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

wprowadź opis obrazu tutaj

Chcę ukryć liczby; jeśli używam:

plt.axis('off')

... otrzymuję ten obraz:

wprowadź opis obrazu tutaj

Ukrywa również etykiety Vi t. Jak mogę zachować etykiety, ukrywając wartości?

Luis Ramon Ramirez Rodriguez
źródło

Odpowiedzi:

141

Jeśli używasz podejścia obiektowego matplotlib , jest to proste zadanie przy użyciu ax.set_xticklabels()i 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
źródło
11
Świetnie nadaje się do usuwania etykiet kleszczy, ale nadal pojawiają się znaki kleszcza ...
Andrew Schreiber
86

Bez a subplotsmożesz uniwersalnie usunąć kleszcze w następujący sposób:

plt.xticks([])
plt.yticks([])
Noel Evans
źródło
44

To działa świetnie. Po prostu wklej to wcześniej plt.show():

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

Bum.

MRT
źródło
2
Dzięki, to działa świetnie. W innych przypadkach tiki są zachowane (ponieważ kierunek
taktów
W przeciwieństwie do odpowiedzi, takich jak ax.set_xticklabels ([]), ta działa doskonale w następującym przypadku: używa się wykresów podrzędnych z opcją sharex i chce usunąć znaczniki tylko dla jednego z wykresów podrzędnych.
Михаил Лисаков
Wspaniały! I plt.gca (). Axes.get_xaxis (). Set_visible (False), aby również pozbyć się etykiet osi x i znaczników.
fbparis
1
lub jeśli masz już topór,ax.xaxis.set_visible(False)
spinup
1
@filip Cieszę się, że pomogło :)
MRT
3

Nie jestem pewien, czy to najlepszy sposób, ale z pewnością możesz zastąpić etykiety kleszczy w następujący sposób:

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

W Pythonie 3.4 generuje to prosty wykres liniowy bez etykiet znaczników na osi x. Oto prosty przykład: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

To pokrewne pytanie ma również kilka lepszych sugestii: Ukrywanie tekstu osi na wykresach matplotlib

Jestem nowy w Pythonie. Twój przebieg może się różnić we wcześniejszych wersjach. Może inni mogą pomóc?

Joe Gavin
źródło
2

aby całkowicie usunąć zaznaczenia użyj:

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

w przeciwnym razie ax.set_yticklabels([])i ax.set_xticklabels([])zachowa znaczniki.

Rusłan S.
źródło
Kiedy próbuję ax.set_yticks([], []), otrzymuję następujące ostrzeżenie: „MatplotlibDeprecationWarning: przekazywanie pomniejszego parametru set_xticks () w pozycji jest przestarzałe od wersji Matplotlib 3.2; parametr ten stanie się później tylko słowem kluczowym w dwóch mniejszych wersjach”. Jaka jest właściwa alternatywa?
Rylan Schaeffer
@RylanSchaeffer, w twoim przykładzie ax.set_yticks([], [])przekazujesz 2 puste listy, co powoduje błąd. Dlaczego to robisz? Zobacz instrukcję poleceń. Jeśli pierwszy argument nie powinny być przekazywane pozycyjnie, przekazać ją z hasła: ax.set_yticks(ticks=[]).
Ruslan S.
0

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

wprowadź opis obrazu tutaj

Nic Scozzaro
źródło