# Streamlit

***

## 1. Tentang Streamlit

Dalam buku Karya Abu Tholib, M.Kom mengatakan bahwa perkembangan teknologi kecerdasan buatan dalam beberapa dekade terakhir sungguh luar biasa pesat. Salah satu cabangnya adalah **Machine Learning** yang berfokus pada sebuah mesin/komputer yang mampu belajar dari data yang tersedia dan mengubah data tersebut menjadi informasi dan keputusan\[1] perluasan implementasi Industri 4.0 dan teknologi baru memungkinkan terobosan baru dalam pengembangan berbagai metode machine learning, Teknologi ini telah mengalami kemajuan signifikan \[2], pendekatan machine learning dapat digunakan untuk menyelesaikan permasalahan yang komplek di berbagai bidang yang tidak dapat di selesaikan oleh program konvensional \[3], dengan semakin meningkatnya daya komputasi dan jumlah data yang tersedia, Machine Learning menjadi lebih efektif dalam menangani tugas-tugas yang lebih kompleks, seperti analisis citra dan teks, pengenalan wajah, dan pemrosesan bahasa alami. &#x20;

Salah satu titik kesulitan bagi para **Data Scientiest** adalah dalam proses setelah mereka menemukan wawasan baru atau membuat model baru. Apa cara terbaik untuk menunjukkan hasil secara visual kepada para khalayak umum adalah dengan membuat aplikasi berbasis website, ada beberapa framework yang biasa digunakan oleh khalayak umum seperti **Flask dan Django** namun kekurangannya adalah kita harus membangun seluruh aplikasi web dari awal, sehingga framework streamlit menjadi pilihan dalam hal kecepatan dan kemudahan. streamlit adalah kerangka kerja utama pertama yang semuanya murni **Python.**

Streamlit **adalah framework Python** yang digunakan untuk membangun aplikasi web dengan antarmuka pengguna interaktif untuk proyek-proyek data science dan machine learning. Ini memungkinkan pengembang untuk membuat aplikasi web khusus dan tampilan data dengan sedikit usaha dan keahlian dalam pengembangan, web Streamlit dibangun di atas pustaka ilmu data yang populer seperti **NumPy, Pandas, dan Matplotlib,** sehingga memudahkan untuk membuat visualisasi dan komponen interaktif dalam aplikasi. Streamlit juga menyediakan API sederhana untuk input dan output data, sehingga mudah untuk terhubung ke berbagai sumber data dan API. Dengan Streamlit, pengembang dapat membuat aplikasi yang dapat digunakan di berbagai platform, seperti Heroku atau AWS. Streamlit juga memiliki fitur berbagi bawaan, di mana pengembang dapat membagikan aplikasi mereka dengan tim mereka atau komunitas yang lebih luas hanya dengan membagikan tautan.

Streamlit adalah pustaka Python yang open source untuk memudahkan membuat dan berbagi aplikasi web yang indah dan sesuai kebutuhan untuk machine learning dan data science\[10]. Hanya dalam beberapa menit, sehingga memudahkan pengembang untuk fokus pada analisis dan visualisasi data mereka.

## 2. Langkah Installl Streamlit

```
python -m venv envku
```

Activate:

```
source envku/bin/activate
```

1. Set up your Python development environment.
2. Run:`pip install streamlit`
3. Validate the installation by running our Hello app:`streamlit hello`
4. Jump to our [Basic concepts](https://docs.streamlit.io/get-started/fundamentals/main-concepts).

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FrGAS81Hddp4uGteZ7GYj%2Fimage.png?alt=media&#x26;token=e252ae4d-da63-4400-b13f-58ab667f4f69" alt=""><figcaption></figcaption></figure>

```
streamlit hello
```

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F3DpQGvkD0ZBIFoxexsuu%2Fimage.png?alt=media&#x26;token=de476956-cdf1-4571-ac37-936c0585670c" alt=""><figcaption></figcaption></figure>

```
streamlit run app.py
```

## 3. Membuat Aplikasi Dasar Streamlit

PASTIKAN CARA DI ATAS TELAH DILAKUKAN..

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F3ornIoWx3W2H9eFlVuR0%2Fimage.png?alt=media&#x26;token=45805067-b6ff-4196-a52c-b64f84517dad" alt=""><figcaption></figcaption></figure>

#### Langkah 2: Membuat Aplikasi Dasar

1. **Buat file Python** baru (misalnya, `app.py, bebas menggunakan apa, asalkan ada ekstensi .py`).
2. Tulis kode berikut untuk membuat aplikasi dasar.

**Contoh kode `app.py`:**

Buat statment paling atas file, import sesuai kebutuhan project..

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FyS5nXyCvLbpajvqYFcXh%2Fimage.png?alt=media&#x26;token=48245a95-2beb-4b5d-bf19-7972b08e76f4" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FKKlp6mrvtRdb7cLM57yu%2Fimage.png?alt=media&#x26;token=6404abee-a13a-482b-a4b9-e5e8f1f58130" alt=""><figcaption><p>Tambahkan judul, dengan st.title</p></figcaption></figure>

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FSGaYzu3OSqB9ZfPiUOJ4%2Fimage.png?alt=media&#x26;token=2d5cc086-4d25-4b22-a1e0-a2f675805368" alt=""><figcaption><p>PREVIEW CODE</p></figcaption></figure>

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FT8jsg7WIH5KDPr3G8ZDv%2Fimage.png?alt=media&#x26;token=75eefc41-87d4-41e9-bd39-c48e5d48281e" alt=""><figcaption><p>Tambahkan paragraf, dengan st.write</p></figcaption></figure>

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2Fqj92aziZKlmJhJUiciJW%2Fimage.png?alt=media&#x26;token=bd42dc85-aace-46ae-b66e-2ddaa2e98ff5" alt=""><figcaption><p>PREVIEW CODE</p></figcaption></figure>

Pada praktek Selanjutnya kita akan menampilkan **dataframe**, silahkan membuat file dengan nama app.py seperti dibawah ini.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FkuIEsiSeTyC8T6fXZg2G%2Fimage.png?alt=media&#x26;token=bc0b395c-e62e-450c-9ac7-3ca226f80597" alt=""><figcaption><p>Tambahkan dataframe, dengan data = {...</p></figcaption></figure>

```
st.write(df)
```

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FahRgvsQJMRr6NZo3hCsI%2Fimage.png?alt=media&#x26;token=627e5283-e595-4f30-927d-34eb65763457" alt=""><figcaption><p>PREVIEW CODE </p></figcaption></figure>

Setelah selesai menulis code di `app.py`. Sekarang, untuk menjalankan aplikasi **Streamlit**, buka terminal, arahkan ke direktori tempat file `app.py` disimpan

```bash
streamlit run app.py
```

## 3.1 Elemen Text

Di **Streamlit**, ada berbagai elemen teks yang memungkinkan Anda menampilkan informasi dengan cara yang lebih menarik dan interaktif.&#x20;

#### 1. **`st.title()`**

Menampilkan judul utama aplikasi. Biasanya digunakan untuk memberi tahu pengguna tentang nama aplikasi atau halaman.

**Contoh:**

```python
import streamlit as st

st.title('Selamat Datang di Aplikasi Streamlit!')
```

**Output**: Ini akan menampilkan teks yang lebih besar dan tebal sebagai judul utama.

#### 2. **`st.header()`**

Menampilkan teks sebagai header, biasanya digunakan untuk membagi aplikasi ke dalam bagian-bagian berbeda. Ini sedikit lebih kecil dari judul (`st.title()`).

**Contoh:**

```python
st.header('Bagian 1: Pendahuluan')
```

**Output**: Teks yang sedikit lebih kecil dari judul utama.

#### 3. **`st.subheader()`**

Menampilkan teks sebagai subheader, yang biasanya lebih kecil daripada header tetapi masih memberikan penekanan pada bagian tertentu.

**Contoh:**

```python
st.subheader('Subbagian 1: Data Pengguna')
```

**Output**: Menampilkan teks lebih kecil dari header, tetapi tetap lebih besar dari teks biasa.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FdmsiITZMxpYf13rGnw4w%2Fimage.png?alt=media&#x26;token=d8598eac-58ab-4878-bc65-7cb112bce9cd" alt=""><figcaption></figcaption></figure>

#### 4. **`st.caption()`**

Menampilkan teks sebagai keterangan yang lebih kecil dan tidak terlalu mencolok. Berguna untuk memberikan penjelasan tambahan atau catatan kaki.

**Contoh:**

```python
st.caption('Data ini hanya untuk tujuan demonstrasi.')
```

**Output**: Menampilkan teks kecil di bawah elemen lainnya.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FuCPhxKPHT5t1Qj67FZO8%2Fimage.png?alt=media&#x26;token=93171882-b367-453b-a509-89ff493533bf" alt=""><figcaption></figcaption></figure>

#### 5. **`st.code()`**

Menampilkan potongan kode dengan format yang lebih baik, berguna jika Anda ingin mendemonstrasikan kode Python atau bahasa lain.

**Contoh:**

```python
st.code('import pandas as pd')
```

**Output**: Menampilkan kode dengan gaya font monospace.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FImb7h1VqRLbE4TcBo9rL%2Fimage.png?alt=media&#x26;token=8aa54e27-3f6e-4bc3-b0ff-b7246b362ef6" alt=""><figcaption></figcaption></figure>

#### 6. **`st.text()`**

Menampilkan teks biasa tanpa format khusus. Ini akan menampilkan teks secara langsung seperti yang ditulis dalam kode.

**Contoh:**

```python
st.text('Ini adalah teks biasa tanpa format atau penekanan.')
```

**Output**: Teks biasa tanpa pemformatan khusus.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FgaUZzMcKzvpZxZO3YLnB%2Fimage.png?alt=media&#x26;token=25cf24eb-2f18-4353-868f-8a751e57aa1f" alt=""><figcaption></figcaption></figure>

#### 7. **`st.latex()`**

Menampilkan ekspresi matematika menggunakan LaTeX. Ini sangat berguna jika Anda ingin menampilkan rumus matematis di aplikasi Anda.

**Contoh:**

```python
st.latex(r' y = mx + b ')
```

**Output**: Menampilkan rumus matematika dengan format yang benar menggunakan LaTeX.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F8bxy70raNKKuZoY0BVHq%2Fimage.png?alt=media&#x26;token=40827b85-b206-4099-8593-833130413253" alt=""><figcaption></figcaption></figure>

#### 8. **`st.markdown()`**

Menampilkan teks dengan sintaks Markdown, yang memungkinkan Anda untuk menambahkan pemformatan lebih lanjut, seperti huruf tebal, miring, tautan, gambar, dan lainnya.

**Contoh:**

```python
st.markdown('**Teks Tebal** dan _Teks Miring_ serta [Tautan](https://streamlit.io)')
```

**Output**: Menampilkan teks dengan format Markdown, termasuk **huruf tebal**, *huruf miring*, dan tautan yang dapat diklik.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F0g6bsoQ7Pp7GnVCCOdka%2Fimage.png?alt=media&#x26;token=05e01f09-3415-4c51-b700-b1f5865823f6" alt=""><figcaption></figcaption></figure>

#### 9. **`st.divider()`**

Menambahkan pembatas visual berupa garis horizontal. Ini membantu membagi aplikasi menjadi bagian-bagian yang terpisah.

**Contoh:**

```python
st.divider()
```

**Output**: Menampilkan garis horizontal yang membagi tampilan aplikasi.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F0g6bsoQ7Pp7GnVCCOdka%2Fimage.png?alt=media&#x26;token=05e01f09-3415-4c51-b700-b1f5865823f6" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
<https://streamlit-emoji-shortcodes-streamlit-app-gwckff.streamlit.app/> (Kumpulan Icon)
{% endhint %}

## 4. Menampilkan Data

a. API

Kita dapat menampilkan data menggunakan API pakai `requests`, lalu **tampilkan** dengan `st.write()`, `st.dataframe()`

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FI7a7u37PHmrQzyeycUza%2Fimage.png?alt=media&#x26;token=4e52b322-b489-4ce0-8acf-2162a0e2c3db" alt=""><figcaption></figcaption></figure>

**b. Menampilkan Data dari File (CSV, Excel, dll.)**

**Bisa upload file** lalu **tampilkan datanya**.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F4ISVcQIS424M1xp92MI1%2Fimage.png?alt=media&#x26;token=93e3f811-5be9-4c7e-93e2-acf0a35108be" alt=""><figcaption></figcaption></figure>

C. Menggunakan `st.write()`

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FZEHXHwjDDPl9ceGgzp1N%2Fimage.png?alt=media&#x26;token=790066c4-e513-486b-b565-a10bc051f1d8" alt=""><figcaption></figcaption></figure>

D. Menggunakan dataFrame random NP

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F5E5P4WU5aU4sG6qXCrpx%2Fimage.png?alt=media&#x26;token=984154c5-ac0d-46cc-8703-ad3ce2339554" alt=""><figcaption></figcaption></figure>

## 5. File Metric

### Penjelasan:

{% hint style="info" %}
`st.metric()` di Streamlit digunakan untuk **menampilkan angka penting** (seperti KPI, statistik, progress) dalam bentuk **kotak kecil**.
{% endhint %}

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FgzroV5nPY2BLBCTAvj4f%2Fimage.png?alt=media&#x26;token=ee8bf27e-1436-43d7-b907-60cd7e7811fc" alt=""><figcaption></figcaption></figure>

### Preview code:&#x20;

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F7l5gX864LzPnHhPVkNR8%2Fimage.png?alt=media&#x26;token=2703ee21-8971-4d53-8319-94ac1fc97875" alt=""><figcaption></figcaption></figure>

## 6. Menampilkan Grafik

**Beberapa Perintah Visualisasi di Streamlit**

### 6.1 Line Chart - `st.line_chart()`

Menampilkan grafik garis.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F5IQNzHEzSkM8DFQBCAcu%2Fimage.png?alt=media&#x26;token=70b58f0c-3be2-4518-9b05-a884f5eb9356" alt=""><figcaption></figcaption></figure>

Preview code:

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FW13ZS88JTmJuYFGKY5Y5%2Fimage.png?alt=media&#x26;token=2438d51a-dda3-4655-b070-9f5c18ceaef3" alt=""><figcaption></figcaption></figure>

### 6.2 Bar Chart - `st.bar_chart()`

Grafik batang&#x20;

```
st.bar_chart(data)
```

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FmUUsnDAd0oYlUj4qHLxG%2Fimage.png?alt=media&#x26;token=36fcabd4-7bbc-4926-ad12-0b7ac7a70204" alt=""><figcaption></figcaption></figure>

### 6.3 Altair Chart - `st.altair_chart()`

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FrOQAjLYKonS3FH4Xkv1q%2Fimage.png?alt=media&#x26;token=235c445b-cf32-48ce-a2d3-ad7ae17560a7" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FVsXBpLptyZ1283EZevXy%2Fimage.png?alt=media&#x26;token=d78ed3b4-426c-4688-b64f-5fc3537cea97" alt=""><figcaption></figcaption></figure>

### 6.4 Map - `st.map()`

Menampilkan peta titik koordinat.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FoE2zOmQbyqcXTmM9bkFR%2Fimage.png?alt=media&#x26;token=1a679ef7-119d-401e-97bb-1991d6e6da9f" alt=""><figcaption></figcaption></figure>

### 6.5 Visualisasi `st.plotly_chart()`

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FQoJ3pxIYwwrJhgsIy1oP%2Fimage.png?alt=media&#x26;token=959ebf3d-ae06-4992-9a21-07bce7114265" alt=""><figcaption></figcaption></figure>

Preview Code:

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FvGQAxGWkIUxmoW87M7N9%2Fimage.png?alt=media&#x26;token=9830452a-e091-4c98-979c-bf7d6b86cf83" alt=""><figcaption></figcaption></figure>

## 7. Input Form

| Fungsi Streamlit              | Deskripsi Singkat                    |
| ----------------------------- | ------------------------------------ |
| **`st.text_input()`**         | Input teks pendek                    |
| **`st.text_area()`**          | Input teks panjang (textarea)        |
| **`st.number_input()`**       | Input angka (integer / float)        |
| **`st.date_input()`**         | Pilih tanggal                        |
| **`st.time_input()`**         | Pilih waktu (jam/menit)              |
| **`st.selectbox()`**          | Dropdown pilihan satu                |
| **`st.multiselect()`**        | Dropdown pilihan banyak              |
| **`st.radio()`**              | Pilih salah satu opsi (radio button) |
| **`st.checkbox()`**           | Centang pilihan (true/false)         |
| **`st.slider()`**             | Slider angka                         |
| **`st.select_slider()`**      | Slider pilihan kustom (teks)         |
| **`st.file_uploader()`**      | Upload file                          |
| **`st.camera_input()`**       | Ambil foto dari kamera               |
| **`st.color_picker()`**       | Pilih warna                          |
| **`st.form()`**               | Membuat form input (grouped submit)  |
| **`st.form_submit_button()`** | Tombol submit untuk form             |

***

## Penjelasan Tambahan

* **`st.form()`** → untuk mengelompokkan beberapa input dalam satu form.
* **`st.form_submit_button()`** → tombol "Submit" khusus untuk `st.form`.
* **`st.file_uploader()`** → mendukung upload gambar, PDF, CSV, dsb.
* **`st.camera_input()`** → langsung ambil foto dari kamera device pengguna (HP/laptop).
* **`st.select_slider()`** → slider tetapi isi pilihannya teks, bukan angka.

***

## Contoh Mini Semua Input

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2Fagk9AD5xtA6YhBP1FquQ%2Fimage.png?alt=media&#x26;token=9e63f776-0c35-4022-a949-010ddde800d6" alt=""><figcaption></figcaption></figure>

***

Preview Code:

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FFcZ7928lAvWIXmzbKM9s%2Flocalhost_8501_.png?alt=media&#x26;token=4a3b10df-caf5-4749-a774-4d8074e04192" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2Fwqz4yzBX2mHITTxHD6Oa%2Flocalhost_8501_%20(2).png?alt=media&#x26;token=521cc2d5-f8d1-45cc-8759-4263ef5178f1" alt=""><figcaption></figcaption></figure>

## 8. Menampilkan Media&#x20;

Di Streamlit, sangat bisa menampilkan berbagai jenis media, seperti gambar, video, audio, dan lainnya, menggunakan beberapa fungsi bawaan.

#### 1. **Menampilkan Gambar**

Untuk menampilkan gambar, kamu bisa menggunakan fungsi `st.image()`.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2Fggf9FmEXFUdTPT0qGM3T%2Fimage.png?alt=media&#x26;token=aeb9872d-c51c-4b96-b995-8b999f697514" alt=""><figcaption></figcaption></figure>

* `caption` untuk memberikan keterangan pada gambar.
* `use_column_width=True` untuk menyesuaikan gambar dengan lebar kolom.

***

#### 2. **Menampilkan Video**

Untuk menampilkan video, gunakan `st.video()`. Kamu bisa menampilkan video yang ada di file lokal atau dari URL (misalnya YouTube).

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2Fh4E3Kb7EI6MswRGCqUVw%2Fimage.png?alt=media&#x26;token=df95b392-042c-4b38-8ac0-bca7adff07f9" alt=""><figcaption></figcaption></figure>

***

#### 3. **Menampilkan Audio**

Untuk menampilkan audio, gunakan `st.audio()`. Audio bisa di-upload dari file lokal atau menggunakan URL.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2Fl8ipHujxX8TJduEUUzWG%2Fimage.png?alt=media&#x26;token=2118a67b-38ab-4a05-ae97-03b41ecd1765" alt=""><figcaption></figcaption></figure>

***

#### 4. **Menampilkan File (PDF, CSV, dsb)**

Untuk menampilkan atau mengunduh file seperti PDF, CSV, atau file lainnya, gunakan `st.file_uploader()` untuk mengupload file dan `st.download_button()` untuk menyediakan tombol unduh.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F8Vh2aODk657ymCk935RF%2Fimage.png?alt=media&#x26;token=32ae3680-73de-4885-a6df-103d11ca1404" alt=""><figcaption></figcaption></figure>

**Upload File:**

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FBx2wWyl8BG03ulAA85Pw%2Fimage.png?alt=media&#x26;token=7505b06a-c9e8-4607-8649-d31af6e2c96f" alt=""><figcaption></figcaption></figure>

```python
```

**Menampilkan PDF:**

```python
import streamlit as st
from PyPDF2 import PdfReader

# Menampilkan PDF
uploaded_pdf = st.file_uploader("Pilih file PDF", type=["pdf"])

if uploaded_pdf is not None:
    reader = PdfReader(uploaded_pdf)
    text = ""
    for page in reader.pages:
        text += page.extract_text()
    st.write(text)
```

***

#### 5. **Menampilkan HTML**

Untuk menampilkan HTML atau konten yang lebih kaya, kamu bisa menggunakan `st.markdown()` dengan opsi `unsafe_allow_html=True`.

```python
import streamlit as st

# Menampilkan HTML langsung
html_code = """
<h1>Selamat datang di Aplikasi Streamlit!</h1>
<p>Ini adalah <strong>paragraf</strong> HTML yang dapat diproses oleh Streamlit.</p>
"""
st.markdown(html_code, unsafe_allow_html=True)
```

***

## 9. Menampilkan Layout dan Container

Layout dan container di **Streamlit** memungkinkan mengatur elemen-elemen dalam aplikasi sehingga lebih terstruktur dan lebih interaktif. Dengan menggunakan berbagai elemen layout, dgn bisa mengontrol tampilan antarmuka aplikasi untuk menampilkan konten dengan cara yang lebih rapi dan responsif.

***

### 1. **Menampilkan Layout Menggunakan Kolom**

Dengan menggunakan `st.columns()`, kamu bisa menampilkan beberapa elemen secara berdampingan dalam kolom.

#### Contoh: Menggunakan Kolom untuk Menampilkan Elemen Secara Berdampingan

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FbqRCdQxjRSVb9oLkvBDI%2Fimage.png?alt=media&#x26;token=99e780d2-bc35-45c9-9010-34df432aa9a2" alt=""><figcaption></figcaption></figure>

#### Penjelasan:

* `st.columns(2)` membuat dua kolom.
* Kamu bisa menambahkan elemen apa saja ke dalam kolom menggunakan `with col1` dan `with col2`.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FAyIrkMcGoeYsFYShGKUP%2Fimage.png?alt=media&#x26;token=25d26718-0d09-4932-a957-90b8c5ff9af8" alt=""><figcaption></figcaption></figure>

***

### 2. **Menggunakan `st.expander()` untuk Konten yang Bisa Dilipat**

Fitur `st.expander()` memungkinkan kamu untuk menyembunyikan dan menampilkan konten dengan cara melipatnya. Ini cocok untuk menampilkan informasi yang panjang atau opsional.

#### Contoh: Menambahkan Expander

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2FiRBbkcEwJZVUL0lFie7I%2Fimage.png?alt=media&#x26;token=b1d10c49-ec23-4ef5-bb12-c1edf1d76bc4" alt=""><figcaption></figcaption></figure>

#### Penjelasan:

* Konten yang berada di dalam `st.expander()` akan disembunyikan sampai pengguna mengklik untuk memperluasnya.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F5m2jAI7vK29jiShmcmxF%2Fimage.png?alt=media&#x26;token=731cad36-77c9-412e-a1eb-60fb7e764944" alt=""><figcaption></figcaption></figure>

***

### 3. **Layout Menggunakan `st.container()`**

`st.container()` digunakan untuk mengelompokkan elemen-elemen dalam satu area. Meskipun tidak mengubah tampilan secara langsung, ini berguna untuk mengelompokkan elemen-elemen dalam aplikasi.

#### Contoh: Menggunakan Container

```python
import streamlit as st

# Membuat container
container = st.container()

# Menambahkan elemen ke dalam container
with container:
    st.header("Konten di dalam Container")
    st.write("Ini adalah elemen-elemen yang ada dalam container.")
    st.button("Tombol dalam Container")
```

#### Penjelasan:

* `st.container()` digunakan untuk mengelompokkan elemen-elemen yang ingin ditampilkan bersama dalam satu blok.

***

### 4. **Menggunakan Sidebar**

Untuk membuat antarmuka yang lebih interaktif dan menyediakan elemen-elemen tambahan, kamu bisa menggunakan **Sidebar**. Semua elemen yang ditempatkan di dalam sidebar tidak akan mempengaruhi area utama aplikasi.

#### Contoh: Sidebar

```python
import streamlit as st

# Menambahkan elemen ke Sidebar
st.sidebar.header("Ini Sidebar")
st.sidebar.radio("Pilih Opsi", ["Opsi 1", "Opsi 2", "Opsi 3"])

# Konten utama
st.title("Konten Utama")
st.write("Ini adalah konten utama yang ditampilkan di layar.")
```

#### Penjelasan:

* `st.sidebar` digunakan untuk membuat elemen-elemen yang ditampilkan di sidebar, terpisah dari tampilan utama aplikasi.

<figure><img src="https://1537830120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fwx2jsHS2MYXinLjkOHv9%2Fuploads%2F452oS9hCHhR0ysM5GsBt%2Fimage.png?alt=media&#x26;token=a40986cc-7a10-48a9-ac13-baf38b1a752b" alt=""><figcaption></figcaption></figure>

```python

import streamlit as st

# Menambahkan elemen navigasi di Sidebar
st.sidebar.header("Navigasi")
selection = st.sidebar.radio("Pilih Halaman", ["Beranda", "Tentang", "Kontak"])

# Konten berdasarkan pilihan
if selection == "Beranda":
    st.title("Beranda")
    st.write("Ini adalah halaman beranda.")
elif selection == "Tentang":
    st.title("Tentang")
    st.write("Ini adalah halaman tentang.")
else:
    st.title("Kontak")
    st.write("Ini adalah halaman kontak.")

# Menambahkan elemen navigasi dengan dropdown di Sidebar
st.sidebar.header("Navigasi")
selection = st.sidebar.selectbox("Pilih Halaman", ["Beranda", "Tentang", "Galeri", "Kontak"])

# Konten berdasarkan pilihan
if selection == "Beranda":
    st.title("Beranda")
    st.write("Ini adalah halaman beranda.")
elif selection == "Tentang":
    st.title("Tentang")
    st.write("Ini adalah halaman tentang.")
elif selection == "Galeri":
    st.title("Galeri")
    st.write("Ini adalah halaman galeri.")
else:
    st.title("Kontak")
    st.write("Ini adalah halaman kontak.")

# Menambahkan tombol untuk navigasi di Sidebar
st.sidebar.header("Navigasi")
if st.sidebar.button("Beranda"):
    st.title("Beranda")
    st.write("Ini adalah halaman beranda.")
elif st.sidebar.button("Tentang"):
    st.title("Tentang")
    st.write("Ini adalah halaman tentang.")
elif st.sidebar.button("Kontak"):
    st.title("Kontak")
    st.write("Ini adalah halaman kontak.")

# Menambahkan tautan navigasi di Sidebar
st.sidebar.header("Navigasi")
st.sidebar.markdown("[Beranda](#beranda)")
st.sidebar.markdown("[Tentang](#tentang)")
st.sidebar.markdown("[Kontak](#kontak)")

# Konten halaman berdasarkan tautan
st.title("Beranda")
st.write("Ini adalah halaman beranda.")

st.title("Tentang")
st.write("Ini adalah halaman tentang.")

st.title("Kontak")
st.write("Ini adalah halaman kontak.")
```
