Matplotlib Histogram: Cara Membuat dan Baca Distribusi Data di Python (2026)
Blog/Tips & Trik/Matplotlib Histogram: Cara Membuat dan Baca Distribusi Data di Python (2026)

Matplotlib Histogram: Cara Membuat dan Baca Distribusi Data di Python (2026)

BimaBima
·6 November 2026·9 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Histogram di Matplotlib dibuat pakai fungsi plt.hist(data, bins=20), yang ngelompokkan angka ke beberapa batang buat nunjukkin sebaran data. Jumlah bins nentuin seberapa detail grafiknya: bins kecil bikin kasar, bins besar bikin halus. Buat data penjualan atau umur pelanggan, histogram langsung nunjukkin di mana angka paling numpuk.

Histogram di Matplotlib adalah grafik batang yang nunjukkin sebaran angka dalam satu kolom data. Kamu bikin pakai satu baris: plt.hist(data, bins=20).

Bedanya sama grafik batang biasa: histogram ngelompokkan angka ke rentang (disebut bins), terus ngitung berapa banyak data yang jatuh di tiap rentang. Cocok buat lihat di mana angka paling numpuk.

Aku bahas dari kode paling dasar, cara atur jumlah bins, nambah label biar rapi, sampai baca hasilnya buat data penjualan toko Indonesia.

Apa itu histogram di Matplotlib?

Histogram adalah grafik yang mecah data numerik jadi beberapa rentang, lalu nunjukkin berapa banyak nilai yang masuk tiap rentang lewat tinggi batang. Di Matplotlib, fungsi plt.hist() yang ngerjain semua: ngelompokkan angka, ngitung frekuensi, dan gambar batangnya sekaligus.

Ini beda dari bar chart. Bar chart bandingin kategori (misalnya penjualan per kota). Histogram nunjukkin sebaran satu variabel numerik (misalnya sebaran nilai transaksi).

import matplotlib.pyplot as plt
import numpy as np

data = np.random.normal(50000, 15000, 500)
plt.hist(data, bins=20)
plt.show()

Kode di atas bikin 500 angka acak, lalu gambar histogram dengan 20 batang. Tiap batang tingginya nunjukkin berapa banyak angka yang jatuh di rentang itu.

Gimana cara bikin histogram dasar di Matplotlib?

Panggil plt.hist() dengan data kamu sebagai argumen pertama, lalu plt.show() buat nampilin. Itu histogram minimal yang jalan. Sisanya cuma soal ngerapiin bins dan label.

  1. Import Matplotlib: import matplotlib.pyplot as plt
  2. Siapkan data numerik dalam list atau array
  3. Panggil plt.hist(data)
  4. Tampilkan pakai plt.show()
import matplotlib.pyplot as plt

nilai_transaksi = [12000, 15000, 15000, 18000, 22000,
                   22000, 22000, 25000, 30000, 45000]

plt.hist(nilai_transaksi, bins=5)
plt.show()

Tanpa argumen bins, Matplotlib pakai 10 batang secara default. Buat data kecil kayak di atas, 5 batang udah cukup jelas.

Apa fungsi bins di histogram?

Bins nentuin berapa banyak rentang data dibagi. Angka bins kecil bikin batang lebar dan grafik kasar. Angka bins besar bikin batang tipis dan detail. Nggak ada angka yang benar buat semua kasus, tergantung seberapa halus kamu mau lihat sebarannya.

Jumlah binsEfek ke grafikCocok buat
5-10Kasar, pola umum kelihatanData kecil, presentasi cepat
20-30Seimbang, detail cukupKebanyakan kasus analisis
50+Detail banget, kadang berisikData besar, cari pola halus

Kamu juga bisa kasih daftar batas rentang sendiri, bukan cuma jumlah. Ini berguna kalau mau rentang yang rapi kayak kelipatan 10.000.

batas = [0, 10000, 20000, 30000, 40000, 50000]
plt.hist(nilai_transaksi, bins=batas)
plt.show()

Gimana cara nambah judul dan label ke histogram?

Pakai plt.title(), plt.xlabel(), dan plt.ylabel() sebelum plt.show(). Tanpa label, orang yang lihat grafik nggak tau sumbunya ngukur apa. Ini beda antara grafik yang kepakai dan yang bikin bingung.

import matplotlib.pyplot as plt

plt.hist(nilai_transaksi, bins=10, color='#0891b2', edgecolor='white')
plt.title('Sebaran Nilai Transaksi Toko Berkah')
plt.xlabel('Nilai transaksi (Rp)')
plt.ylabel('Jumlah transaksi')
plt.show()

Argumen edgecolor='white' ngasih garis pemisah tipis antar batang, jadi tiap bin kelihatan jelas. Buat ngatur warna, font, dan tampilan lebih jauh, ada panduan lengkap di cara kustomisasi grafik Matplotlib.

Contoh kasus: sebaran umur pelanggan toko_berkah

Toko_berkah punya data 1.842 pelanggan yang daftar member. Aku mau tau kelompok umur mana yang paling banyak, biar promo bisa ditembak ke umur yang tepat.

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('member_toko_berkah.csv')

plt.hist(df['umur'], bins=15, color='#f97316', edgecolor='white')
plt.title('Sebaran Umur Member Toko Berkah (n=1.842)')
plt.xlabel('Umur (tahun)')
plt.ylabel('Jumlah member')
plt.show()

Hasilnya: batang paling tinggi ada di rentang 27-33 tahun, isinya 641 member atau sekitar 35% dari total. Sebaran mereng ke kanan, artinya member muda jauh lebih banyak dari yang di atas 50 tahun.

Insight ini langsung kepakai. Promo lewat aplikasi mobile masuk akal, soalnya mayoritas member umur produktif yang melek smartphone. Kalau grafik cuma ngasih rata-rata umur 34 tahun, aku nggak akan tau ada gundukan besar di usia 27-33 itu.

Histogram vs cara lihat sebaran lain

Histogram bukan satu-satunya cara lihat sebaran. Tapi buat data numerik satu kolom, ini yang paling gampang dibaca orang non-teknis. Boxplot lebih ringkas tapi butuh orang yang udah paham quartile.

Kalau kamu mau bandingin sebaran dua kelompok sekaligus, tumpuk dua histogram dengan transparansi pakai argumen alpha.

plt.hist(df_jakarta['umur'], bins=15, alpha=0.5, label='Jakarta')
plt.hist(df_bandung['umur'], bins=15, alpha=0.5, label='Bandung')
plt.legend()
plt.show()

Argumen alpha=0.5 bikin batang setengah transparan, jadi dua histogram yang numpuk tetap kelihatan dua-duanya.

Kesalahan umum waktu bikin histogram

  • Lupa atur bins. Default 10 batang sering nyembunyiin pola. Coba beberapa angka bins sebelum ambil kesimpulan.
  • Nganggep histogram sama dengan bar chart. Histogram buat data numerik kontinu, bar chart buat kategori. Salah pilih bikin grafik nyesatin.
  • Nggak kasih label sumbu. Grafik tanpa xlabel dan ylabel nggak kebaca orang lain.
  • Masukin data yang ada nilai kosong. NaN bikin plt.hist() error atau hasil aneh. Bersihin dulu pakai df['kolom'].dropna().
  • Bins kebanyakan buat data kecil. 50 bins buat 30 data cuma bikin grafik penuh batang tipis yang nggak ada polanya.

FAQ

Berapa jumlah bins yang ideal untuk histogram?

Nggak ada angka tunggal yang benar. Buat kebanyakan kasus, 20 sampai 30 bins ngasih detail yang cukup tanpa keliatan berisik. Buat data kecil di bawah 50 angka, pakai 5 sampai 10 bins. Cara paling aman: coba beberapa nilai bins dan lihat mana yang paling jelas nunjukkin polanya. Kamu juga bisa pakai aturan akar kuadrat, yaitu jumlah bins kira-kira sama dengan akar dari jumlah data.

Apa beda histogram dan bar chart?

Histogram nunjukkin sebaran satu variabel numerik dengan ngelompokkan angka ke rentang. Bar chart bandingin nilai antar kategori terpisah, kayak penjualan per kota. Di histogram, batang biasanya nempel tanpa jarak karena rentangnya menyambung. Di bar chart, batang ada jaraknya karena kategorinya terpisah. Pilih histogram kalau datamu angka kontinu, pilih bar chart kalau datamu label kategori.

Gimana cara ganti warna histogram di Matplotlib?

Pakai argumen color di dalam plt.hist(), misalnya plt.hist(data, color='#0891b2'). Kamu bisa pakai nama warna kayak 'red' atau kode heksadesimal kayak '#f97316'. Tambahin edgecolor='white' biar tiap batang punya garis pemisah tipis. Warna nggak cuma soal estetika, tapi bantu bedain beberapa histogram yang ditumpuk dalam satu grafik.

Kenapa histogram-ku error atau kosong?

Biasanya karena data punya nilai kosong (NaN) atau bukan tipe angka. Cek dulu pakai df['kolom'].dtype, pastikan hasilnya numerik kayak int atau float. Kalau ada NaN, bersihin pakai df['kolom'].dropna() sebelum masuk ke plt.hist(). Kalau datamu masih berupa teks, ubah dulu pakai pd.to_numeric(). Histogram cuma jalan buat angka.

Bisakah bikin histogram langsung dari Pandas?

Bisa. Pandas punya df['kolom'].hist() yang di belakang layar tetap manggil Matplotlib. Buat grafik cepat waktu eksplorasi, cara ini lebih ringkas. Tapi kalau kamu butuh atur judul, warna, dan label detail, mending panggil plt.hist() langsung biar kontrolnya penuh. Dua-duanya hasilnya histogram yang sama.

Lanjut belajar

Ringkasnya: histogram dibuat pakai plt.hist(data, bins=20), jumlah bins nentuin seberapa detail grafiknya, dan selalu kasih judul plus label sumbu biar kebaca orang lain.

Buat grafik yang tampilannya lebih rapi dan siap presentasi, lanjut ke kustomisasi grafik Matplotlib. Mau paham istilah statistik di baliknya? Cek glossary distribusi data dan glossary outlier.

Detail lengkap semua argumen plt.hist() ada di dokumentasi resmi Matplotlib. Mau latihan olah data beneran sampai lancar? Coba modul Python di Ngulik Data.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Seaborn Boxplot: Cara Deteksi Outlier Secara Visual (2026)
Tips & Trik
21 November 2026•9 menit baca

Seaborn Boxplot: Cara Deteksi Outlier Secara Visual (2026)

Boxplot nunjukin sebaran data dan titik nyeleneh dalam satu gambar. Ini cara bikin seaborn boxplot, baca IQR-nya, dan pakai buat deteksi outlier.

BimaBima
Seaborn Pairplot: Cara Eksplorasi Data Cepat dengan Python (2026)
Tips & Trik
18 November 2026•9 menit baca

Seaborn Pairplot: Cara Eksplorasi Data Cepat dengan Python (2026)

Satu baris kode buat lihat hubungan semua kolom numerik sekaligus. Ini cara pakai seaborn pairplot buat eksplorasi data, lengkap dengan contoh dan cara bacanya.

BimaBima
Seaborn Heatmap: Visualisasi Matriks Korelasi (2026)
Tips & Trik
15 November 2026•10 menit baca

Seaborn Heatmap: Visualisasi Matriks Korelasi (2026)

Seaborn heatmap ngubah matriks korelasi jadi grid warna, jadi kamu bisa langsung lihat variabel mana yang saling terkait. Ini cara bikinnya dari df.corr() sampai atur warna dan angka.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore