Streamlit adalah framework Python yang memungkinkan pengembang membuat antarmuka pengguna (UI) interaktif dan responsif dengan mudah untuk aplikasi data. Berikut adalah beberapa fitur utama dalam tampilan Streamlit:
1. Komponen Input
- Teks: st.text_input(), st.text_area()
- Pilihan:
- Dropdown: st.selectbox()
- Multi-select: st.multiselect()
- Tombol: st.button()
- Slider:
- Nilai numerik: st.slider()
- Rentang: st.slider() (dengan parameter range)
- Checkbox: st.checkbox()
- Radio Button: st.radio()
- Tanggal/Waktu:
- Tanggal: st.date_input()
- Waktu: st.time_input()
- File Upload: st.file_uploader()
- Password Input: st.text_input(type="password")
2. Komponen Output
- Teks dan Markdown:
- Teks: st.write(), st.text()
- Markdown: st.markdown()
- Header/Subheader: st.header(), st.subheader()
- Keterangan (Caption): st.caption()
- Kode:
- Menampilkan kode: st.code()
- Highlighter Python: st.syntax_highlight()
- Notifikasi:
- Success, error, warning: st.success(), st.error(), st.warning()
- Informasi: st.info()
- Progress bar dan Spinner:
- st.progress()
- st.spinner()
3. Visualisasi Data
- Grafik interaktif:
- Matplotlib: st.pyplot()
- Seaborn: st.pyplot()
- Plotly: st.plotly_chart()
- Altair: st.altair_chart()
- Tabel:
- DataFrame: st.dataframe()
- Statis: st.table()
4. Layout
- Sidebar: Elemen interaktif dapat dipindahkan ke sidebar dengan st.sidebar.<komponen>().
- Kolom: Membagi layout ke kolom dengan st.columns().
- Tab: Membuat tab dengan st.tabs().
- Expandable: Elemen yang dapat diperluas atau disembunyikan dengan st.expander().
5. Interaktivitas
- State Management: Melacak variabel melalui st.session_state.
- Callbacks: Menjalankan fungsi khusus saat suatu elemen diubah.
6. Multimedia
- Gambar: st.image()
- Audio: st.audio()
- Video: st.video()
7. Tema Kustomisasi
- Tema bawaan: Mode terang dan gelap.
- Kustomisasi tema: Bisa diatur melalui file konfigurasi config.toml.
Dengan fitur-fitur ini, Streamlit sangat cocok untuk membuat dashboard data atau aplikasi analitik interaktif. Anda dapat mengintegrasikannya dengan berbagai library Python seperti Pandas, NumPy, dan scikit-learn untuk mendukung analisis data dan machine learning.
contoh code streamlit
contoh code streamlit
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Judul aplikasi
st.title("Contoh Penggunaan Fungsi Streamlit")
# Sidebar
st.sidebar.header("Input Parameter")
name = st.sidebar.text_input("Masukkan Nama Anda", "Pengguna")
age = st.sidebar.slider("Usia Anda", 1, 100, 25)
hobby = st.sidebar.multiselect(
"Hobi Anda",
["Membaca", "Bersepeda", "Memasak", "Berenang", "Lainnya"],
default=["Membaca"]
)
# Header dan Subheader
st.header("Halo, Selamat Datang!")
st.subheader(f"Nama Anda: {name}")
st.write(f"Usia Anda: {age} tahun")
st.write(f"Hobi Anda: {', '.join(hobby)}")
# Expander untuk informasi tambahan
with st.expander("Klik untuk lihat info tambahan"):
st.info("Aplikasi ini dibuat untuk mendemonstrasikan fungsi-fungsi Streamlit.")
# Input file
uploaded_file = st.file_uploader("Unggah file CSV", type=["csv"])
if uploaded_file is not None:
data = pd.read_csv(uploaded_file)
st.write("Data Anda:")
st.dataframe(data)
# Menampilkan data statis
if uploaded_file is not None:
st.subheader("Statistik Deskriptif")
st.table(data.describe())
# Grafik sederhana
st.header("Contoh Grafik")
x = np.linspace(0, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("Grafik Sine Wave")
ax.set_xlabel("X-axis")
ax.set_ylabel("Y-axis")
st.pyplot(fig)
# Checkbox untuk menunjukkan/hide elemen
if st.checkbox("Tampilkan teks tambahan"):
st.write("Streamlit sangat mudah digunakan!")
# Radio button untuk memilih tampilan
chart_option = st.radio(
"Pilih jenis visualisasi:",
["Bar Chart", "Line Chart"]
)
# Random data
data = pd.DataFrame(
np.random.randn(10, 3),
columns=["A", "B", "C"]
)
if chart_option == "Bar Chart":
st.bar_chart(data)
else:
st.line_chart(data)
# Progress Bar
st.header("Progress Bar")
import time
progress_bar = st.progress(0)
for i in range(101):
time.sleep(0.01)
progress_bar.progress(i)
st.success("Selesai!")
# Footer
st.caption("Dibuat menggunakan Streamlit.")