Giới thiệu
Trực quan hóa dữ liệu đóng vai trò trung tâm trong khoa học máy tính và quyết định dựa trên dữ liệu. Trong khi các thư viện như Matplotlib và Seaborn thường là những công cụ đầu tiên được học, thì còn nhiều framework tương tác khác giúp xây dựng dashboard và báo cáo cho các ứng dụng thực tế. Trong số đó, Streamlit, Dash, và Bokeh nổi bật vì cho phép các nhà phát triển biến mã Python thành các ứng dụng web hoàn chỉnh mà không cần kỹ năng phát triển web nâng cao.
Mục lục
- 1. Streamlit
- 2. Dash
- 3. Bokeh
- 4. Ví dụ: Xây dựng và Triển khai Dashboard với Streamlit
- 5. Triển khai lên Cloud (Ví dụ Streamlit Cloud)
- 6. Tại sao nên sử dụng các công cụ này?
- 7. Kết luận
1. Streamlit
Streamlit là một trong những cách đơn giản nhất để xây dựng dashboard tương tác. Nó cho phép các nhà phát triển sử dụng mã Python thuần túy và tự động tạo giao diện web đáp ứng. Bạn có thể thêm các widget (thanh trượt, checkbox, đầu vào văn bản) với cú pháp tối thiểu, khiến nó trở thành công cụ lý tưởng cho việc prototyping nhanh.
Tính năng nổi bật
- Giao diện đơn giản, dễ sử dụng.
- Hỗ trợ nhiều loại widget khác nhau.
- Dễ dàng tích hợp với các thư viện Python khác.
2. Dash
Dash, được phát triển bởi Plotly, mạnh mẽ và tùy biến hơn. Nó kết hợp Flask (để xử lý backend), React.js (để xử lý frontend) và Plotly (để tạo biểu đồ). Ứng dụng Dash có cấu trúc rõ ràng và cho phép bạn xây dựng dashboard cấp doanh nghiệp với callback và layout.
Tính năng nổi bật
- Cấu trúc ứng dụng rõ ràng, dễ bảo trì.
- Hỗ trợ callback và cập nhật dữ liệu theo thời gian thực.
- Tích hợp với các biểu đồ động từ Plotly.
3. Bokeh
Bokeh là một thư viện được thiết kế để tạo ra các trực quan hóa tương tác và có thể mở rộng trong trình duyệt. Khác với Streamlit hoặc Dash, Bokeh chủ yếu tập trung vào việc trực quan hóa, nhưng nó cũng có thể hoạt động như một backend cho các dashboard.
Tính năng nổi bật
- Tạo ra các biểu đồ đẹp mắt và tương tác.
- Hỗ trợ nhiều loại biểu đồ khác nhau.
- Có thể mở rộng và tùy chỉnh theo nhu cầu.
4. Ví dụ: Xây dựng và Triển khai Dashboard với Streamlit
Dưới đây là một ví dụ nhỏ sử dụng Streamlit để trực quan hóa một tập dữ liệu giá trị ngẫu nhiên. Chúng ta sẽ triển khai nó lên Streamlit Cloud (phiên bản miễn phí cho sinh viên).
Mã nguồn (app.py)
python
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# Tiêu đề
st.title("📊 Ví Dụ Dashboard Tương Tác")
# Tùy chọn ở thanh bên
st.sidebar.header("Điều Khiển")
n_points = st.sidebar.slider("Số Điểm Dữ Liệu", 10, 500, 100)
chart_type = st.sidebar.selectbox("Loại Biểu Đồ", ["Đường", "Phân Tán", "Lịch Sử"])
# Tạo dữ liệu ngẫu nhiên
data = pd.DataFrame({
"x": np.arange(n_points),
"y": np.random.randn(n_points).cumsum()
})
# Hiển thị dataframe
st.write("### Dữ Liệu Được Tạo Ngẫu Nhiên", data.head())
# Trực quan hóa
st.write("### Trực Quan Hóa")
if chart_type == "Đường":
st.line_chart(data.set_index("x"))
elif chart_type == "Phân Tán":
st.scatter_chart(data.set_index("x"))
elif chart_type == "Lịch Sử":
fig, ax = plt.subplots()
ax.hist(data["y"], bins=20, color="skyblue", edgecolor="black")
st.pyplot(fig)
Chạy Ứng Dụng Tại Địa Phương
bash
pip install streamlit pandas numpy matplotlib
streamlit run app.py
Truy cập: http://localhost:8501
5. Triển khai lên Cloud (Ví dụ Streamlit Cloud)
- Đẩy mã của bạn lên GitHub (repository với
app.pyvàrequirements.txt).
-
Ví dụ
requirements.txt:streamlit pandas numpy matplotlib
-
Truy cập https://streamlit.io/cloud và đăng nhập bằng GitHub.
-
Nhấn “New App”, chọn repository và nhánh của bạn, và chọn
app.pylàm tệp đầu vào. -
Triển khai — chỉ trong vài giây, ứng dụng của bạn sẽ được phát trực tuyến với URL công khai như:
https://tên-người-dùng-repo.streamlit.app
6. Tại sao nên sử dụng các công cụ này?
- Streamlit → dashboard nhanh chóng, đơn giản (thích hợp cho sinh viên, prototyping).
- Dash → dashboard có cấu trúc, sẵn sàng cho sản xuất (sử dụng trong doanh nghiệp).
- Bokeh → biểu đồ tương tác mạnh mẽ với tính linh hoạt.
7. Kết luận
Streamlit, Dash và Bokeh mở rộng khả năng trực quan hóa dữ liệu vượt ra ngoài các biểu đồ tĩnh. Chúng cho phép sinh viên và các chuyên gia trong lĩnh vực khoa học máy tính chia sẻ thông tin một cách tương tác và thậm chí triển khai chúng như các ứng dụng web. Triển khai lên các nền tảng cloud như Streamlit Cloud, Heroku, hoặc AWS làm cho các công cụ này có thể truy cập từ bất kỳ đâu, biến các thí nghiệm địa phương thành các dự án có thể chia sẻ.