Sembunyikan nilai sumbu tetapi pertahankan label centang sumbu di matplotlib

101

Saya memiliki gambar ini:

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

masukkan deskripsi gambar di sini

Saya ingin menyembunyikan nomor; jika saya menggunakan:

plt.axis('off')

... Saya mendapatkan gambar ini:

masukkan deskripsi gambar di sini

Itu juga menyembunyikan label, Vdan t. Bagaimana cara menyimpan label sambil menyembunyikan nilainya?

Luis Ramon Ramirez Rodriguez
sumber

Jawaban:

137

Jika Anda menggunakan pendekatan berorientasi objek matplotlib , ini adalah tugas sederhana menggunakan ax.set_xticklabels()dan 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.dll
sumber
11
Berfungsi bagus untuk menghapus label centang, tetapi Anda masih mendapatkan tanda centang ...
Andrew Schreiber
85

Tanpa a subplots, Anda dapat menghilangkan tanda centang seperti ini:

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

Ini bekerja dengan baik. Cukup tempel ini sebelumnya plt.show():

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

Ledakan.

MRT
sumber
2
Terima kasih, ini berfungsi dengan baik. Dalam kasus lain, tick dipertahankan (karena arah tick keluar secara default)
pengguna140259
Tidak seperti jawaban seperti ax.set_xticklabels ([]), yang satu ini bekerja dengan sempurna untuk kasus berikut: seseorang menggunakan subplot dengan opsi sharex dan ingin menghapus centang hanya untuk salah satu subplot.
Михаил Лисаков
Bagus! Dan plt.gca (). Axes.get_xaxis (). Set_visible (False) untuk juga menghilangkan label sumbu x dan tanda centang.
fbparis
1
atau jika Anda sudah memiliki objek kapak,ax.xaxis.set_visible(False)
spinup
1
@filip Saya senang membantu :)
MRT
3

Tidak yakin ini cara terbaik, tetapi Anda pasti bisa mengganti label centang seperti ini:

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

Di Python 3.4, ini menghasilkan plot garis sederhana tanpa label centang pada sumbu x. Contoh sederhananya ada di sini: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

Pertanyaan terkait ini juga memiliki beberapa saran yang lebih baik: Menyembunyikan teks sumbu di plot matplotlib

Saya baru mengenal python. Jarak tempuh Anda mungkin berbeda di versi sebelumnya. Mungkin orang lain bisa membantu?

Joe Gavin
sumber
2

untuk menghapus tanda centang seluruhnya gunakan:

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

jika tidak ax.set_yticklabels([])dan ax.set_xticklabels([])akan menyimpan tanda centang.

Ruslan S.
sumber
Ketika saya mencoba ax.set_yticks([], []), saya mendapatkan peringatan berikut: "MatplotlibDeprecationWarning: Meneruskan parameter minor set_xticks () secara posisional sudah tidak digunakan lagi sejak Matplotlib 3.2; parameter akan menjadi hanya kata kunci dua rilis minor nanti." Apa alternatif yang tepat?
Rylan Schaeffer
@RylanSchaeffer, dalam contoh ax.set_yticks([], [])Anda, Anda melewati 2 daftar kosong yang menyebabkan kesalahan. Kenapa melakukan itu? Lihat manual perintah. Jika argumen pertama tidak harus dilalui secara posisi, lulus dengan kata kunci: ax.set_yticks(ticks=[]).
Ruslan S.
0

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

masukkan deskripsi gambar di sini

Nic Scozzaro
sumber