Pertanyaan Bagaimana cara menghapus sumbu atas dan kanan di matplotlib?


Alih-alih gaya sumbu "kotak" default, saya hanya ingin memiliki sumbu kiri dan bawah, yaitu:

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

Ini seharusnya mudah, tetapi saya tidak dapat menemukan opsi yang diperlukan di dokumen.


75
2018-05-29 08:45


asal


Jawaban:


Ini adalah solusi Matplotlib 2.0 yang disarankan dari situs web resmi SINI:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)

# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')

plt.show()

enter image description here


62
2017-12-08 15:58



Atau, ini

def simpleaxis(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.get_xaxis().tick_bottom()
    ax.get_yaxis().tick_left()

tampaknya mencapai efek yang sama pada sebuah sumbu tanpa kehilangan dukungan label yang diputar.

(Matplotlib 1.0.1; solusi yang terinspirasi oleh ini).


59
2017-11-04 15:20



[sunting] matplotlib sekarang (2013-10) pada versi 1.3.0 yang termasuk ini

Kemampuan itu sebenarnya baru saja ditambahkan, dan Anda perlu versi Subversion untuk itu. Anda dapat melihat kode contoh sini.

Saya hanya memperbarui untuk mengatakan bahwa ada yang lebih baik contoh sekarang online. Masih membutuhkan versi Subversion, belum ada rilis dengan ini.

[Sunting] Matplotlib 0.99.0 RC1 baru saja dirilis, dan termasuk kemampuan ini.


31
2018-05-29 09:21



Jika Anda tidak memerlukan kutu dan semacamnya (misalnya untuk merencanakan ilustrasi kualitatif), Anda juga dapat menggunakan solusi cepat ini:

Buat poros tidak terlihat (misalnya dengan plt.gca().axison = False) dan kemudian menggambarnya secara manual plt.arrow.


7
2018-05-29 10:06



(Ini lebih merupakan komentar ekstensi, selain jawaban komprehensif di sini.)


Perhatikan bahwa kita dapat menyembunyikan masing-masing dari ketiga elemen ini secara terpisah satu sama lain:

  • Untuk menyembunyikan border (alias "spine"): ax.set_frame_on(False) atau ax.spines['top'].set_visible(False)

  • Untuk menyembunyikan kutu: ax.tick_params(top=False)

  • Untuk menyembunyikan label: ax.tick_params(labeltop=False)


1
2017-12-27 10:10



Perpustakaan Seaborn memiliki ini dibangun dengan fungsi despine ().

Cukup tambahkan:

import seaborn as sns

Sekarang buat grafik Anda. Dan tambahkan di bagian akhir:

sns.despine()

Jika Anda melihat beberapa nilai parameter default dari fungsi, ia menghilangkan tulang belakang atas dan kanan dan menjaga tulang belakang bawah dan kiri:

sns.despine(top=True, right=True, left=False, bottom=False)

Lihat dokumentasi lebih lanjut di sini: https://seaborn.pydata.org/generated/seaborn.despine.html


0
2017-07-05 07:48



Ini jauh lebih sederhana, tetapi mungkin melakukan trik:

remove_border ()


-4
2018-01-11 05:44