Soru Matplotlib'de y ekseni işaretleme etiketi ve x ekseni işaretleme etiketi


Aşağıdaki kodu kullanarak matplotlib ile bir çizim oluşturursam:

import numpy as np
from matplotlib import pyplot as plt
xx = np.arange(0,5, .5)
yy = np.random.random( len(xx) )
plt.plot(xx,yy)
plt.imshow()

Ekli görüntüye benzeyen bir sonuç elde ediyorum. Sorun şu ki En alttaki etiket, en soldaki x-tick etiketiyle çakışır. Bu profesyonelce görünüyor. Otomatik olup olmadığını merak ediyordum En y-tick etiketini silme yolu, bu yüzden yok örtüşme problemi. Daha az kod satırı, daha iyi. enter image description here


36
2018-02-23 22:42


Menşei




Cevaplar:


Ticker modülünde bir sınıf var MaxNLocator bu alabilir prune kwarg.
Bunu kullanarak ilk tıklamayı kaldırabilirsiniz:

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
import numpy as np
xx = np.arange(0,5, .5)
yy = np.random.random( len(xx) )
plt.plot(xx,yy)
plt.gca().xaxis.set_major_locator(MaxNLocator(prune='lower'))
plt.show()

Sonuç:

enter image description here


36
2018-02-23 23:02





X eksenindeki keneleri kaldırabilirsiniz:

ax.tick_params(axis='x', pad=15)

değiştirmek ax ile plt.gca() değişkeni saklamıyorsanız ax şimdiki rakam için.

Ayrıca her iki ekseni de kaldırabilirsiniz axis parametre.


17
2017-12-15 20:02



Çok zarif görünüyor, ama ne yazık ki, 3 boyutlu grafikler üzerinde çalışmıyor gibi görünüyor plot_surface. - metakermit


Örtüşen sorunu düzeltmenin çok zarif bir yolu, x ve y-tick etiketlerinin (yani eksene olan mesafenin) doldurulmasını arttırmaktır. Köşeyi bırakarak çoğu etiket istenmeyebilir. Benim düşünceme göre, eğer etiketler, varsayılan konfigürasyondan ziyade eksenden biraz daha uzaksa, genel olarak güzel görünüyor.

Tampon, matplotlibrc dosyasıyla veya çizim betiğinde komutları kullanarak değiştirilebilir.

import matplotlib as mpl

mpl.rcParams['xtick.major.pad'] = 8
mpl.rcParams['ytick.major.pad'] = 8

Çoğu zaman, 6'lık bir dolgu da yeterlidir.


6
2018-04-21 18:25





Bu ayrıntılı olarak cevaplandırıldı İşte. Temel olarak, böyle bir şey kullanırsınız:

plt.xticks([list of tick locations], [list of tick lables])

2
2018-02-23 23:00