Próbuję narysować cyfrę bez znaczników lub liczb na jednej z osi (używam osi w tradycyjnym sensie, a nie nomenklatury matplotlib!). Problem, na jaki natrafiłem, polega na tym, że matplotlib dostosowuje znaczniki x (y) odejmując wartość N, a następnie dodaje N na końcu osi.
Może to być niejasne, ale poniższy uproszczony przykład uwypukla problem, przy czym „6.18” jest wartością obrażającą N:
import matplotlib.pyplot as plt
import random
prefix = 6.18
rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')
frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
xlabel_i.set_visible(False)
xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
xlabel_i.set_fontsize(0.0)
xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
tick.set_visible(False)
plt.show()
Trzy rzeczy, które chciałbym wiedzieć to:
Jak w pierwszej kolejności wyłączyć to zachowanie (chociaż w większości przypadków jest to przydatne, nie zawsze!) Przejrzałem
matplotlib.axis.XAxis
i nie mogę znaleźć niczego odpowiedniegoJak mogę sprawić, że N zniknie (tj.
X.set_visible(False)
)Czy jest i tak lepszy sposób na wykonanie powyższego? Moja ostatnia fabuła byłaby 4x4 na wykresie, jeśli to istotne.
źródło
Odpowiedzi:
Zamiast ukrywać każdy element, możesz ukryć całą oś:
Możesz też ustawić tiki na pustą listę:
W tej drugiej opcji możesz nadal używać
plt.xlabel()
iplt.ylabel()
dodawać etykiety do osi.źródło
'Axes3DSubplot' object has no attribute 'get_zaxis'
get_xaxis().set_visible(False)
. Myślę, że matplotlib w tym przypadku inicjuje niektóre parametry tak, jakby wykres był 2D.ax.set_zticks([])
zrobi, co chceszJeśli chcesz ukryć tylko tekst osi z zachowaniem linii siatki:
Wykonanie
set_visible(False)
lubset_ticks([])
ukryje również linie siatki.źródło
Jeśli jesteś podobny do mnie i nie zawsze odzyskujesz osie
ax
, przy kreśleniu figury byłoby prostym rozwiązaniemźródło
Trochę starego wątku, ale wydaje się, że jest to szybsza metoda z użyciem najnowszej wersji matplotlib:
ustaw główny formatyzator dla osi x
źródło
W rzeczywistości nie byłem w stanie renderować obrazu bez danych obramowania lub osi w oparciu o którykolwiek fragment kodu (nawet ten zaakceptowany przy odpowiedzi). Po przejrzeniu dokumentacji API wylądowałem na tym kodzie, aby wyrenderować mój obraz
Użyłem tego
tick_params
wywołania, aby zasadniczo zamknąć wszelkie dodatkowe informacje, które mogą być renderowane, i mam doskonały wykres w moim pliku wyjściowym.źródło
Dla ułatwienia tego procesu kodowałem kolorami tę liczbę.
Możesz mieć pełną kontrolę nad figurą za pomocą tych poleceń, aby uzupełnić odpowiedź, dodałem również kontrolę nad splajnami:
źródło
ax.set_xticklabels([])
iax.set_xticks([])
nie działało dla mnie, ale działałoax.axes.get_xaxis().set_visible(False)
.Podczas korzystania z obiektowego interfejsu API
Axes
obiekt ma dwie przydatne metody usuwania tekstu osiset_xticklabels()
orazset_xticks()
.Załóżmy, że tworzysz fabułę za pomocą
Jeśli chcesz po prostu usunąć etykiety zaznaczenia, możesz użyć
lub do całkowitego usunięcia kleszczy, możesz użyć
Te metody są przydatne do określania dokładnie, gdzie chcesz kleszczy i jak chcesz je oznakować. Przekazanie pustej listy powoduje odpowiednio brak tików lub brak etykiet.
źródło
Jedną sztuczką może być ustawienie koloru etykiet kleszczy na biały, aby go ukryć!
źródło