Pertanyaan Menyembunyikan di matplotlib: Sampah tidak berpusat dan proporsinya tidak benar pada sumbu


lihat contoh ini:

 import matplotlib.pyplot as plt
 l = [3,3,3,2,1,4,4,5,5,5,5,5,5,5,5,5]
 plt.hist(l,normed=True)
 plt.show()

Outputnya diposting sebagai gambar. Saya punya dua pertanyaan:

a) Mengapa hanya 4 dan 5 tempat sampah yang berpusat di sekitar nilainya? Bukankah seharusnya yang lain juga begitu? Apakah ada trik untuk membuat mereka terpusat?

b) Mengapa sampah tidak dinormalkan ke proporsi? Saya ingin nilai y dari semua tempat sampah untuk dijumlahkan menjadi satu.

Perhatikan bahwa contoh nyata saya mengandung lebih banyak nilai dalam daftar, tetapi semuanya berbeda.

enter image description here


7
2017-07-03 14:58


asal


Jawaban:


Anda harus menyesuaikan argumen kata kunci dari plt.hist fungsi. Ada banyak dari mereka dan dokumentasi dapat membantu Anda menjawab banyak pertanyaan ini.

Sebuah. ) Anda dapat meneruskan kata kunci bins=range(1,7) dan align=left. Pengaturan bins kata kunci ke suatu urutan memberikan batas setiap bin. Sebagai contoh, [1,2], [2,3], [3,4], ..., [5, 6].

b. ) Periksa lebar bin Anda (rwidth!=1). Dari matplotlib.pyplot.hist dokumentasi:

Jika Benar, elemen pertama dari tupel kembali adalah jumlah   dinormalisasi untuk membentuk kepadatan probabilitas, yaitu, n / (len (x) * dbin). Di sebuah   kepadatan probabilitas, integral dari histogram harus 1; kamu   dapat memverifikasi bahwa dengan integrasi probabilitas trapezoidal   fungsi kepadatan:

Ini berarti bahwa area di bawah sampah Anda menjumlahkan satu, tetapi karena lebar bin kurang dari 1, ketinggian bisa dinormalisasi sedemikian rupa sehingga ketinggian tidak menambahkan hingga 1. Jika Anda menyesuaikan rwidth=1, Anda mendapatkan plot yang terlihat bagus:

plt.hist(l, bins=range(1,7), align='left', rwidth=1, normed=True)

12
2017-07-03 15:13