Yanıtlar:
Alternatif olarak, matplotlib'in onları konumlandırmasına izin verirken (şu anda yalnızca ile MaxNLocator
) kenelerin sayısını ayarlamak istiyorsanız pyplot.locator_params
,
pyplot.locator_params(nbins=4)
Bu yöntemde aşağıda belirtildiği gibi belirli bir eksen belirtebilirsiniz, varsayılan değer her ikisidir:
# To specify the number of ticks on both or any single axes
pyplot.locator_params(axis='y', nbins=6)
pyplot.locator_params(axis='x', nbins=10)
numticks
bunun yerine çalıştınbins
numticks
işaret ettiği gibi logaritmik araziler için çözüm ekleyebilir misiniz?
[0, 1, ..., 99]
ve şimdi bir set ise nticks=10
, yeni seyrek etiketler eksen boyunca on kat daha uzağa yerleştirilecektir, yani şimdi 1
nerede 9
, 2
nerede 19
... ve 9
nerede olacak 99
.
Birisi hala bu sayfayı arama sonuçlarında alıyorsa:
fig, ax = plt.subplots()
plt.plot(...)
every_nth = 4
for n, label in enumerate(ax.xaxis.get_ticklabels()):
if n % every_nth != 0:
label.set_visible(False)
Kenelerin özelleştirilmesi ve görünümü sorununu çözmek için matplotlib web sitesinde Kene Bulucu kılavuzuna bakın
ax.xaxis.set_major_locator(plt.MaxNLocator(3))
X eksenindeki toplam kenelerin sayısını 3'e ayarlar ve eşit olarak eksen boyunca dağıtır.
Bununla ilgili güzel bir öğretici de var
ax = df.plot()
pandas.DataFrame
endeksiyle [2019-01-01, ... 2019-11-01] bir df ( ) varsa , çağırın ax = df.plot()
, bir şekil nesnesi döndürün . call ax.xaxis.set_major_locator(plt.MaxNLocator(3))
ilk 3 indeksini [2019/01/01, 2019/01/02, 2019/01/03] göstermek sadece.
df.plot()
genellikle görüntüler minor_locator
, bu yüzden denemek isteyebilirsiniz ax1.xaxis.set_minor_locator(plt.MaxNLocator(3))
. Ayrıca 3
görüntülemek istediğiniz kenelerin sayısını da değiştirmeyi unutmayın . Pandalar için tavsiye ederim import matplotlib.dates as mdates
ve koşmak ax.xaxis.set_minor_locator(mdates.MonthLocator(interval = 1))
içinax.xaxis.set_minor_formatter(mdates.DateFormatter('%m-%Y'))
set_ticks()
Eksen nesneleri için bir işlev vardır .
get_xticks()
veya get_yticks()
ilk olarak arayabilir , gerektiği gibi düzenleyebilir ve ardından listeyi geri gönderebilirsiniz set_ticks()
.
set_ticks()
, ama ben set_xticks()
ve set_yticks()
. Bunlar, eksen değil, eksen nesnelerinin nitelikleridir. Belki de bu son birkaç yılda değişti.
birisinin buna hala ihtiyacı varsa ve burada hiçbir şey benim için gerçekten işe yaramadığı için, kenelerin sayısını tam olarak N'ye sabitlerken, oluşturulan arsa görünümünü "olduğu gibi" tutan çok basit bir yol buldum:
import numpy as np
import matplotlib.pyplot as plt
f, ax = plt.subplots()
ax.plot(range(100))
ymin, ymax = ax.get_ylim()
ax.set_yticks(np.round(np.linspace(ymin, ymax, N), 2))
ax.set_yticks(np.linspace(int(ymin), int(ymax), N), 2)
@Raphael'in verdiği çözüm basit ve oldukça faydalı.
Yine de, görüntülenen onay etiketleri orijinal dağıtımdan değil, döndürülen dizinin dizinlerinden örneklenen değerler olacaktır np.linspace(ymin, ymax, N)
.
Orijinal onay etiketlerinizden eşit aralıklarla yerleştirilmiş N değerlerini görüntülemek için set_yticklabels()
yöntemi kullanın . İşte y ekseni için tamsayı etiketli bir snippet:
import numpy as np
import matplotlib.pyplot as plt
ax = plt.gca()
ymin, ymax = ax.get_ylim()
custom_ticks = np.linspace(ymin, ymax, N, dtype=int)
ax.set_yticks(custom_ticks)
ax.set_yticklabels(custom_ticks)
Bir günlük ölçeği kullanıldığında, ana kenelerin sayısı aşağıdaki komutla sabitlenebilir
import matplotlib.pyplot as plt
....
plt.locator_params(numticks=12)
plt.show()
Ayarlanacak değer numticks
, görüntülenecek eksen kenesi sayısını belirler.
@ Bgamari'nin gönderisine locator_params()
işlevi tanıttığı için krediler , ancak nticks
bir günlük ölçeği kullanıldığında parametre bir hata atar.
pyplot.locator_params(axis = 'x', nbins = 4)
(veyaaxis = 'y'
) belirleyebildi . Teşekkürler @bgamari!