Saya menggunakan matplotlib untuk membuat histogram.
Apakah ada cara untuk secara manual mengatur ukuran nampan yang bertentangan dengan jumlah nampan?
python
matplotlib
histogram
Sam Creamer
sumber
sumber
(data.max() - data.min()) / number_of_bins_you_want
. The+ binwidth
dapat diubah hanya1
untuk membuat ini contoh yang lebih mudah dipahami.lw = 5, color = "white"
atau menyisipkan celah putih antara barUntuk N nampan, tepi nampan ditentukan oleh daftar nilai N +1 di mana N pertama memberikan tepi nampan yang lebih rendah dan +1 memberi tepi atas dari nampan terakhir.
Kode:
Perhatikan bahwa linspace menghasilkan array dari min_edge ke max_edge yang dipecah menjadi nilai N +1 atau N bin
sumber
Saya kira cara mudahnya adalah dengan menghitung minimum dan maksimum data yang Anda miliki, lalu hitung
L = max - min
. Kemudian Anda membagiL
dengan lebar bin yang diinginkan (saya berasumsi ini adalah apa yang Anda maksud dengan ukuran bin) dan menggunakan plafon dari nilai ini sebagai jumlah bin.sumber
Saya suka hal-hal terjadi secara otomatis dan untuk sampah jatuh pada nilai-nilai "baik". Berikut ini tampaknya bekerja dengan cukup baik.
Hasilnya memiliki nampan pada interval ukuran bin yang bagus.
sumber
desired_bin_size=0.05
,min_boundary=0.850
,max_boundary=2.05
perhitungann_bins
menjadiint(23.999999999999993)
yang menghasilkan 23 bukan 24 dan oleh karena itu salah satu bin terlalu sedikit. Pembulatan sebelum konversi bilangan bulat bekerja untuk saya:n_bins = int(round((max_boundary - min_boundary) / desired_bin_size, 0)) + 1
Saya menggunakan kuantil untuk membuat tempat sampah seragam dan dipasang ke sampel:
sumber
np.arange(0, 1.01, 0.5)
ataunp.linspace(0, 1, 21)
. Tidak ada tepi, tapi saya mengerti kotak memiliki luas yang sama, tetapi lebarnya berbeda pada sumbu X?Saya memiliki masalah yang sama dengan OP (saya pikir!), Tetapi saya tidak bisa membuatnya bekerja seperti yang ditentukan Lastalda. Saya tidak tahu apakah saya telah menafsirkan pertanyaan dengan benar, tetapi saya telah menemukan solusi lain (mungkin ini cara yang sangat buruk untuk melakukannya).
Ini adalah cara saya melakukannya:
plt.hist([1,11,21,31,41], bins=[0,10,20,30,40,50], weights=[10,1,40,33,6]);
Yang menciptakan ini:
Jadi, parameter pertama pada dasarnya 'menginisialisasi' nampan - saya secara khusus membuat angka di antara rentang yang saya atur di parameter bins.
Untuk mendemonstrasikan ini, lihat array di parameter pertama ([1,11,21,31,41]) dan array 'sampah' di parameter kedua ([0,10,20,30,40,50]) :
Lalu saya menggunakan parameter 'bobot' untuk menentukan ukuran setiap bin. Ini adalah larik yang digunakan untuk parameter bobot: [10,1,40,33,6].
Jadi bin 0 hingga 10 diberi nilai 10, bin 11 hingga 20 diberi nilai 1, 21 hingga 30 bin diberi nilai 40, dll.
sumber
Untuk histogram dengan integer x-values akhirnya saya gunakan
Offset 0,5 terpusat pada nampan pada nilai sumbu x. The
plt.xticks
panggilan menambahkan tanda centang untuk setiap bilangan bulat.sumber