Saya membuat plot histogram menggunakan data dari file dan tidak ada masalah. Sekarang saya ingin menempatkan data dari file lain dalam histogram yang sama, jadi saya melakukan sesuatu seperti ini
n,bins,patchs = ax.hist(mydata1,100)
n,bins,patchs = ax.hist(mydata2,100)
tetapi masalahnya adalah untuk setiap interval, hanya bilah dengan nilai tertinggi yang muncul, dan yang lainnya disembunyikan. Saya bertanya-tanya bagaimana saya bisa memetakan kedua histogram secara bersamaan dengan warna yang berbeda.
python
matplotlib
plot
histogram
Buka jalannya
sumber
sumber
pyplot.hold(True)
sebelum merencanakan, untuk berjaga-jaga?None
default. Jika Anda ingin desain yang sama seperti yang ditunjukkan pada grafik, Anda dapat mengaturedgecolor
parameter di keduanya misalnya menjadik
(hitam). Prosedurnya mirip untuk legenda.pyplot.hist([x, y], bins, alpha=0.5, label=['x', 'y'])
.Jawaban yang diterima memberikan kode untuk histogram dengan bilah yang tumpang tindih, tetapi jika Anda ingin setiap bilah saling berdampingan (seperti yang saya lakukan), coba variasi di bawah ini:
Referensi: http://matplotlib.org/examples/statistics/histogram_demo_multihist.html
EDIT [2018/03/16]: Diperbarui untuk memungkinkan plot array dengan ukuran berbeda, seperti yang disarankan oleh @stochastic_zeitgeist
sumber
plt.hist
untuk menghasilkan satu file pdf untuk setiap histogram? Saya memuat data saya menggunakanpandas.read_csv
dan file memiliki 36 kolom dan 100 baris. Jadi saya ingin 100 file pdf.x=np.array(df.a)
dany=np.array(df.b.dropna())
pada dasarnya berakhir menjadiplt.hist([x, y], weights=[np.ones_like(x)/len(x), np.ones_like(y)/len(y)])
Jika Anda memiliki ukuran sampel yang berbeda, mungkin sulit untuk membandingkan distribusi dengan sumbu y tunggal. Sebagai contoh:
Dalam hal ini, Anda dapat memplot dua set data Anda pada sumbu yang berbeda. Untuk melakukannya, Anda bisa mendapatkan data histogram Anda menggunakan matplotlib, bersihkan porosnya, dan kemudian plot ulang pada dua sumbu terpisah (menggeser tepi nampan sehingga tidak tumpang tindih):
sumber
Sebagai pelengkap jawaban Gustavo Bezerra :
Jika Anda ingin setiap histogram dinormalisasi (
normed
untuk mpl <= 2.1 dandensity
untuk mpl> = 3.1 ) Anda tidak bisa hanya menggunakannormed/density=True
, Anda perlu mengatur bobot untuk setiap nilai sebagai gantinya:Sebagai perbandingan, sama persis
x
dany
vektor dengan bobot default dandensity=True
:sumber
Anda harus menggunakan
bins
dari nilai yang dikembalikan olehhist
:sumber
Berikut adalah metode sederhana untuk memplot dua histogram, dengan bilah mereka berdampingan, pada plot yang sama ketika data memiliki ukuran yang berbeda:
sumber
Sepertinya Anda hanya ingin grafik batang:
Atau, Anda dapat menggunakan subplot.
sumber
Hanya dalam kasus Anda memiliki panda (
import pandas as pd
) atau tidak apa-apa dengan menggunakannya:sumber
Ada satu peringatan ketika Anda ingin memplot histogram dari array numpy 2-d. Anda perlu menukar 2 sumbu.
sumber
Pertanyaan ini telah dijawab sebelumnya, tetapi ingin menambahkan solusi cepat / mudah lain yang mungkin membantu pengunjung lain ke pertanyaan ini.
Beberapa contoh bermanfaat ada di sini untuk perbandingan kde vs histogram.
sumber
Terinspirasi oleh jawaban Solomon, tetapi untuk tetap dengan pertanyaan, yang terkait dengan histogram, solusi bersih adalah:
Pastikan untuk merencanakan yang lebih tinggi terlebih dahulu, jika tidak, Anda perlu mengatur plt.ylim (0,0.45) agar histogram yang lebih tinggi tidak dipotong.
sumber
Juga merupakan opsi yang sangat mirip dengan jawaban joaquin:
Memberikan hasil sebagai berikut:
sumber