Saya memiliki terlalu banyak kutu pada grafik saya dan mereka saling berhadapan.
Bagaimana saya bisa mengurangi jumlah kutu?
Misalnya, saya punya kutu:
1E-6, 1E-5, 1E-4, ... 1E6, 1E7
Dan saya hanya ingin:
1E-5, 1E-3, ... 1E5, 1E7
Saya sudah mencoba bermain dengan itu LogLocator
, tetapi saya belum bisa mengetahuinya.
python
matplotlib
jlconlin
sumber
sumber
pyplot.locator_params(axis = 'x', nbins = 4)
(atauaxis = 'y'
) membuat prosesnya sangat mudah. Terima kasih @ bgamari!numticks
sebagai penggantinbins
numticks
solusi untuk plot logaritmik seperti yang ditunjukkan oleh @meduz?[0, 1, ..., 99]
dan sekarang satu setnticks=10
, maka label jarang baru akan ditempatkan sepuluh kali terpisah sepanjang sumbu, yaitu sekarang1
akan duduk di mana9
dulu, di2
mana19
... dan di9
mana99
dulu.Jika seseorang masih mendapatkan halaman ini di hasil pencarian:
sumber
Untuk mengatasi masalah penyesuaian dan tampilan kutu, lihat panduan Tick Locators di situs web matplotlib
ax.xaxis.set_major_locator(plt.MaxNLocator(3))
Akan mengatur jumlah kutu di sumbu x ke 3, dan mendistribusikannya secara merata di sumbu.
Ada juga tutorial yang bagus tentang ini
sumber
ax = df.plot()
pandas.DataFrame
) dengan indeks datetime [2019-01-01, ... 2019-11-01], panggilax = df.plot()
, kembalikan objek gambar. panggilanax.xaxis.set_major_locator(plt.MaxNLocator(3))
hanya menampilkan 3 indeks pertama [2019-01-01, 2019-01-02, 2019-01-03].df.plot()
sering menampilkanminor_locator
, jadi Anda mungkin ingin mencobaax1.xaxis.set_minor_locator(plt.MaxNLocator(3))
. Juga ingat untuk mengganti3
jumlah kutu yang ingin Anda tampilkan. Untuk jangka waktu panda saya sarankanimport matplotlib.dates as mdates
dan jalankanax.xaxis.set_minor_locator(mdates.MonthLocator(interval = 1))
denganax.xaxis.set_minor_formatter(mdates.DateFormatter('%m-%Y'))
Ada
set_ticks()
fungsi untuk objek sumbu.sumber
get_xticks()
atauget_yticks()
pertama untuk objek sumbu, mengedit seperlunya, lalu meneruskan daftar kembali keset_ticks()
.set_ticks()
, tapi saya punyaset_xticks()
danset_yticks()
. Ini adalah atribut dari objek sumbu, bukan sumbu. Mungkin ini telah berubah selama beberapa tahun terakhir.jika seseorang masih membutuhkannya, dan karena tidak ada yang benar-benar bekerja di sini untuk saya, saya datang dengan cara yang sangat sederhana yang menjaga penampilan plot yang dihasilkan "sebagaimana adanya" sambil memperbaiki jumlah kutu ke tepat N:
sumber
ax.set_yticks(np.linspace(int(ymin), int(ymax), N), 2)
Solusi yang diberikan @raphael sangat mudah dan cukup membantu.
Namun, label centang yang ditampilkan tidak akan berupa nilai sampel dari distribusi asli tetapi dari indeks array yang dikembalikan oleh
np.linspace(ymin, ymax, N)
.Untuk menampilkan nilai N yang berjarak sama dari label centang asli Anda, gunakan
set_yticklabels()
metode ini. Berikut ini cuplikan untuk sumbu y, dengan label bilangan bulat:sumber
Ketika skala log digunakan, jumlah kutu utama dapat diperbaiki dengan perintah berikut
Nilai yang ditetapkan untuk
numticks
menentukan jumlah kutu sumbu yang akan ditampilkan.Kredit ke posting @ bgamari untuk memperkenalkan
locator_params()
fungsi, tetapinticks
parameter melempar kesalahan ketika skala log digunakan.sumber