Diagram Batang dan Histogram
Visualisasikan jumlah kategori dengan ax.bar() dan distribusi data dengan ax.hist(), lalu sesuaikan jumlah bin dan warna tepi.
Diagram Batang dan Histogram adalah pelajaran Pandas & NumPy Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Pandas & NumPy Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Grafik Batang dan Histogram
Grafik batang menampilkan data kategorikal: satu batang untuk setiap kategori, dengan tinggi batang yang sebanding dengan suatu nilai. Grafik ini menjawab pertanyaan “berapa banyak yang dimiliki setiap kategori?”. Histogram menampilkan distribusi variabel numerik kontinu: data dikelompokkan ke dalam interval, dan tinggi batang menunjukkan jumlah atau frekuensi pada setiap interval. Histogram menjawab pertanyaan “bagaimana nilai-nilai ini terdistribusi?”. Keduanya masing-masing menggunakan ax.bar() dan ax.hist().
ax.bar() untuk Grafik Batang Vertikal
ax.bar(x, height) menggambar grafik batang vertikal dengan x sebagai urutan posisi kategori (atau label) dan height sebagai nilai batang. Parameter utama: width (nilai bawaan 0.8, mengatur lebar batang relatif terhadap celah), color, edgecolor, dan align ('center' atau 'edge'). Fungsi ini mengembalikan daftar objek Artist Rectangle.
import matplotlib.pyplot as plt
import numpy as np
categories = ['East', 'West', 'North', 'South']
values = [420, 380, 310, 290]
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(categories, values, color='steelblue', edgecolor='white', width=0.6)
ax.set_title('Regional Revenue')
ax.set_xlabel('Region')
ax.set_ylabel('Revenue (USD)')
# plt.show()
plt.close()Menyesuaikan Tampilan Batang
Beberapa penyesuaian dapat membuat grafik batang jauh lebih mudah dibaca: gunakan satu warna aksen untuk semua batang (atau array warna untuk membedakan setiap batang), tambahkan label nilai di atas setiap batang dengan ax.bar_label(), atur lebar batang agar tersedia ruang yang cukup, dan tetapkan ax.set_ylim(0, max * 1.15) untuk menyediakan ruang bagi label di atas batang tertinggi.
fig, ax = plt.subplots(figsize=(7, 4))
bars = ax.bar(categories, values, color='steelblue', edgecolor='white', width=0.6)
# Add value labels above bars
ax.bar_label(bars, fmt='%d', padding=3, fontsize=10)
# Give space above bars for labels
ax.set_ylim(0, max(values) * 1.15)
ax.set_title('Regional Revenue')
plt.tight_layout()
plt.close()Grafik Batang Horizontal dengan ax.barh()
Gunakan ax.barh(y, width) untuk membuat grafik batang horizontal. Batang horizontal lebih disarankan ketika label kategori panjang (label tersebut terbaca secara alami dari kiri ke kanan) atau ketika terdapat banyak kategori (batang dapat ditumpuk dengan lebih ringkas). Semua parameter penyesuaian yang sama tetap berlaku: height mengatur ketebalan batang, sedangkan ax.barh_label() (atau ax.bar_label()) menambahkan label teks.
import pandas as pd
df = pd.DataFrame({'region': categories, 'revenue': values})
df_sorted = df.sort_values('revenue')
fig, ax = plt.subplots(figsize=(7, 4))
ax.barh(df_sorted['region'], df_sorted['revenue'],
color='steelblue', edgecolor='white', height=0.5)
ax.set_title('Revenue by Region (Sorted)')
ax.set_xlabel('Revenue (USD)')
plt.tight_layout()
plt.close()Grafik Batang Berkelompok
Untuk membandingkan beberapa kelompok secara berdampingan, buat grafik batang berkelompok dengan menggeser posisi batang secara manual. Hitung posisi tengah untuk setiap kelompok, lalu kurangi atau tambahkan pergeseran tetap untuk setiap subkelompok. Total lebar batang ditambah celah antarkelompok harus sama dengan 1.0 agar batang tidak saling bertumpang tindih. Menetapkan ax.set_xticks() akan memusatkan label tanda skala di antara batang yang berkelompok.
products = ['A', 'B', 'C']
q1 = [80, 120, 95]
q2 = [90, 110, 105]
x = np.arange(len(products))
width = 0.35
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(x - width/2, q1, width, label='Q1', color='steelblue')
ax.bar(x + width/2, q2, width, label='Q2', color='coral')
ax.set_xticks(x)
ax.set_xticklabels(products)
ax.legend()
ax.set_title('Q1 vs Q2 Sales by Product')
plt.close()Grafik Batang Bertumpuk
Batang bertumpuk menunjukkan komposisi total di beberapa subkelompok. Batang kelompok kedua dimulai dari posisi berakhirnya batang kelompok pertama dengan menggunakan parameter bottom. Nilai bottom untuk setiap lapisan berikutnya adalah jumlah kumulatif semua lapisan sebelumnya. Batang bertumpuk berguna untuk menampilkan total sekaligus kontribusi setiap komponen.
q1_arr = np.array(q1)
q2_arr = np.array(q2)
fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(products, q1_arr, label='Q1', color='steelblue')
ax.bar(products, q2_arr, bottom=q1_arr, label='Q2', color='coral')
ax.legend()
ax.set_title('Stacked Q1 + Q2 Sales by Product')
ax.set_ylabel('Total Sales')
plt.close()ax.hist() untuk Histogram
ax.hist(data, bins) membuat histogram. Parameter bins mengatur jumlah interval dengan jarak sama yang digunakan untuk membagi data (nilai bawaan 10). Anda juga dapat meneruskan daftar tepi interval untuk membuat interval dengan ukuran berbeda. Parameter utama: density=True menormalisasi histogram menjadi kepadatan probabilitas, edgecolor menambahkan batas di antara batang, sedangkan color dan alpha mengatur tampilannya.
np.random.seed(42)
data = np.random.randn(500) # 500 samples from standard normal
fig, ax = plt.subplots(figsize=(7, 4))
ax.hist(data, bins=30, color='steelblue', edgecolor='white', alpha=0.7)
ax.set_title('Distribution of Values')
ax.set_xlabel('Value')
ax.set_ylabel('Count')
plt.close()Memilih Jumlah Interval
Jumlah bin sangat memengaruhi tampilan histogram. Terlalu sedikit bin menyembunyikan struktur data; terlalu banyak bin menghasilkan lonjakan yang berisik. Heuristik yang umum digunakan: aturan Sturges (≈ log2(n) + 1), aturan Scott, atau aturan Freedman-Diaconis. Matplotlib mendukungnya sebagai string: bins='auto', bins='scott', bins='fd'. Untuk analisis eksploratif, cobalah beberapa nilai secara manual; untuk presentasi, pilih jumlah bin yang paling baik menyampaikan bentuk distribusi.
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, b in zip(axes, [5, 30, 'auto']):
ax.hist(data, bins=b, edgecolor='white', color='steelblue', alpha=0.7)
ax.set_title(f'bins={b}')
ax.set_xlabel('Value')
plt.tight_layout()
plt.close()Histogram yang Tumpang Tindih untuk Perbandingan
Untuk membandingkan dua distribusi pada sumbu yang sama, panggil ax.hist() dua kali dengan data dan warna yang berbeda. Gunakan alpha=0.5 untuk keduanya agar area yang tumpang tindih terlihat. Tambahkan label dan panggil ax.legend(). Penggunaan density=True menormalisasi kedua histogram ke skala yang sama ketika ukuran sampel berbeda, sehingga bentuknya dapat dibandingkan secara langsung.
group_a = np.random.randn(300)
group_b = np.random.randn(300) + 1.5 # shifted right
fig, ax = plt.subplots(figsize=(7, 4))
ax.hist(group_a, bins=25, alpha=0.5, color='steelblue', label='Group A', density=True)
ax.hist(group_b, bins=25, alpha=0.5, color='coral', label='Group B', density=True)
ax.legend()
ax.set_title('Distribution Comparison')
plt.close()Membuat Plot dari Series dan DataFrames Pandas
.plot.bar() dan .plot.hist() tersedia sebagai metode DataFrame/Series dan secara otomatis menghasilkan gambar Matplotlib. Keduanya menerima parameter ax untuk menggambar pada Axes yang sudah ada. Ini adalah cara tercepat untuk membuat diagram batang dari data Pandas yang dikelompokkan: hitung agregasi groupby, panggil .plot.bar() pada hasilnya, lalu sesuaikan Axes yang dikembalikan.
import pandas as pd
import numpy as np
df_sales = pd.DataFrame({
'region': ['East', 'West', 'North', 'South'],
'revenue': [420, 380, 310, 290]
}).set_index('region')
fig, ax = plt.subplots(figsize=(7, 4))
df_sales['revenue'].plot.bar(ax=ax, color='steelblue', rot=0)
ax.set_title('Revenue by Region')
plt.tight_layout()
plt.close()Memilih Diagram Batang atau Histogram
Pilihan antara diagram batang dan histogram bergantung pada jenis data Anda. Gunakan diagram batang ketika sumbu x mewakili kategori berbeda yang tidak berurutan (nama produk, wilayah, segmen pengguna), dengan batang yang mewakili nilai agregat untuk setiap kategori. Gunakan histogram ketika sumbu x merupakan variabel numerik kontinu dan Anda ingin menunjukkan bagaimana nilai tersebar dalam suatu rentang. Kesalahan visualisasi yang umum adalah menukar keduanya, sehingga pembaca dapat memperoleh pemahaman yang keliru tentang jenis data.
# Bar chart: categorical x-axis (product names)
products = ['Widget', 'Gadget', 'Doohickey']
revenue = [500, 300, 200]
fig, ax = plt.subplots(figsize=(5, 3))
ax.bar(products, revenue, color='steelblue')
ax.set_title('Revenue per Product (Bar Chart)')
plt.close()
# Histogram: continuous x-axis (order sizes)
order_sizes = np.random.exponential(scale=50, size=300)
fig, ax = plt.subplots(figsize=(5, 3))
ax.hist(order_sizes, bins=20, color='coral', edgecolor='white')
ax.set_title('Distribution of Order Sizes (Histogram)')
plt.close()Pemeriksaan Singkat
Uji pemahaman Anda tentang diagram batang dan histogram dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari: ax.bar() membuat diagram batang vertikal dan ax.barh() membuat diagram batang horizontal; bottom memungkinkan batang bertumpuk; ax.hist() membuat histogram dengan jumlah bin yang dikendalikan oleh bins; dan density=True menormalisasi histogram agar dapat dibandingkan secara adil. Selanjutnya, kita akan menambahkan label sumbu, judul, dan menyimpan gambar berkualitas publikasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Diagram Batang dan Histogram” gratis?
Ya — teks lengkap “Diagram Batang dan Histogram” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Pandas & NumPy Academy, upgrade ke CoddyKit PRO. Kursus Pandas & NumPy Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Diagram Batang dan Histogram”?
Visualisasikan jumlah kategori dengan ax.bar() dan distribusi data dengan ax.hist(), lalu sesuaikan jumlah bin dan warna tepi. Kamu berlatih Pandas & NumPy Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Pandas & NumPy Academy?
Tidak diperlukan pengalaman sebelumnya. Pandas & NumPy Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Diagram Batang dan Histogram” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Pandas & NumPy Academy ini?
Ya. Setiap pelajaran Pandas & NumPy Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Arsitektur Figure dan Axes
- Plot Garis dan Sebaran
- Diagram Batang dan Histogram
- Label, Judul, dan Menyimpan Figure