Soru Matplotlib'deki üst ve sağ ekseni nasıl kaldırabilirim?


Varsayılan "kutulu" eksen stili yerine sadece sol ve alt eksene sahip olmak istiyorum, yani:

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

Bu kolay olmalı, ancak dokümanlarda gerekli seçenekleri bulamıyorum.


76
2018-05-29 08:45


Menşei




Cevaplar:


Bu resmi web sitesinden önerilen Matplotlib 2.0 çözümü İŞTE:

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


63
2017-12-08 15:58



Bu, matplotlib'in daha yeni sürümlerinde kabul edilen yanıttan daha iyidir. - ffledgling


Alternatif olarak, bu

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()

döndürülmüş etiket desteğini kaybetmeden bir eksen üzerinde aynı etkiyi elde eder gibi görünüyor.

(Matplotlib 1.0.1; çözümden esinlenen çözüm bu).


59
2017-11-04 15:20





matplotlib şu an (2013-10) 1.3.0 sürümünde bunu içeren

Bu yetenek aslında eklenmişti ve bunun için Subversion versiyonuna ihtiyacınız var. Örnek kodu görebilirsiniz İşte.

Sadece daha iyi olduğunu söylemek için güncelleniyorum örnek şu an çevrim içi. Yine de Subversion sürümüne ihtiyaç var, bununla birlikte henüz bir sürüm yayınlanmadı.

[değiştir] Matplotlib 0.99.0 RC1 yeni piyasaya sürüldü ve bu özelliği içeriyor.


31
2018-05-29 09:21



Adresindeki uyarıyı okuduğunuzdan emin olun. matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/... Yukarıdaki işaretli etiketler ile yukarıda anlatılanları kullanmaya başlamadan önce işaretleme işareti desteğinin eksik olması hakkında! - timday
Lütfen düzenlemelerimle iyi olduğundan emin olun. - tacaswell
Ekseni nasıl oluşturduğunuza bağlı gibi görünüyor. Tarafından üretilen eksenler mpl.subplots bu şekilde kullanılamaz mı? - Stefan van der Walt
Örnek bağlantı artık bozuldu. - mkosmala


Kene ve benzeri özelliklere (örneğin, nitel çizimleri çizmek için) ihtiyacınız yoksa, bu hızlı çözümü de kullanabilirsiniz:

Ekseni görünmez yapın (ör. plt.gca().axison = False) ve sonra elle elle çizin plt.arrow.


7
2018-05-29 10:06



Bu dikenleri kaldırmak gibi görünüyor ama onay işaretlerini yerinde bırakın. Kene nasıl çıkarılacağı hakkında bir fikrin var mı? - Rob Young
@Rob: Haklısın, aslında düşündüğüm senaryoda farklı bir çözüm kullandım. Cevabımı değiştirdim, bu şimdi çalışmalı, ama genel olarak kabul edilen çözüm daha iyi. - nikow


(Bu, kapsamlı cevapların yanı sıra bir uzatma yorumu niteliğindedir.)


Bu üç unsurun her birini birbirinden bağımsız olarak gizleyebileceğimizi unutmayın:

  • Sınırı gizlemek için (aka "omurga"): ax.set_frame_on(False) veya ax.spines['top'].set_visible(False)

  • Keneleri gizlemek için: ax.tick_params(top=False)

  • Etiketleri gizlemek için: ax.tick_params(labeltop=False)


1
2017-12-27 10:10





Library Seaborn, bu despine () işleviyle yerleşiktir.

Sadece ekle:

import seaborn as sns

Şimdi grafiğinizi oluşturun. Ve sonunda ekleyin:

sns.despine()

Fonksiyonun varsayılan parametre değerlerinden bazılarına bakarsanız, üst ve sağ omurgaları kaldırır ve alt ve sol omurgaları tutar:

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

Daha fazla dökümantasyona buradan göz atın: https://seaborn.pydata.org/generated/seaborn.despine.html


0
2017-07-05 07:48





Bu çok daha ilkel, ama hile yapabilir:

remove_border ()


-4
2018-01-11 05:44