Lets-Plot: Thư viện vẽ đồ thị mã nguồn mở cho dữ liệu thống kê
(lets-plot.org)- Lets-Plot là thư viện vẽ đồ thị đa nền tảng hỗ trợ trực quan hóa dữ liệu thống kê trong Python và Kotlin, dựa trên nguyên tắc Grammar of Graphics
- Thư viện cung cấp riêng các triển khai cho Python và Kotlin, nên có thể dùng phù hợp với quy trình làm việc của từng hệ sinh thái, từ môi trường notebook đến IDE và phát triển ứng dụng
- Trên Python, có thể xem biểu đồ không chỉ trong notebook mà còn trong SciView của PyCharm và IntelliJ IDEA
- Trên Kotlin, thư viện hướng tới các trường hợp sử dụng trực quan hóa từ Kotlin notebook đến ứng dụng Compose-Multiplatform
- Thư viện cung cấp geocoding, vẽ
GeoDataFrame, và tùy biến tooltip/chú thích, nên cũng có thể dùng để xây dựng dữ liệu không gian và biểu đồ tương tác
Tổng quan về Lets-Plot
- Lets-Plot là thư viện vẽ đồ thị đa nền tảng dựa trên nguyên tắc Grammar of Graphics
- Nếu muốn học đồng thời ggplot2 và Grammar of Graphics, có thể tham khảo tài liệu của Hadley Wickham “ggplot2: Elegant Graphics for Data Analysis”
- Tài liệu bắt đầu và ví dụ được cung cấp tại các đường dẫn sau
Nền tảng được hỗ trợ và các tính năng chính
-
Python
- Đây là thư viện trực quan hóa cho Python, được cung cấp dưới dạng Grammar of Graphics for Python
- Có thể sử dụng trong Python notebook
- Cũng có thể xem biểu đồ trong SciView của IDE PyCharm và IntelliJ IDEA
-
Kotlin
- Đây là thư viện trực quan hóa đa nền tảng cho Kotlin, được cung cấp dưới dạng Grammar of Graphics for Kotlin
- Hướng tới các trường hợp sử dụng trong hệ sinh thái Kotlin, từ Kotlin notebook đến ứng dụng Compose-Multiplatform
-
Trực quan hóa địa không gian
- Có thể tìm đối tượng không gian bằng mô-đun Geocoding
- Nếu đã có
GeoDataFrame, có thể vẽ biểu đồ ngay
-
Tooltip và chú thích
- Có thể tùy biến nội dung, định dạng giá trị và hình thức cho tooltip và annotation của các lớp biểu đồ
1 bình luận
Các ý kiến trên Hacker News
Hay đấy. Có vẻ dựa trên ngữ pháp đồ họa kiểu ggplot2. Có thể xem ví dụ tại đây: https://lets-plot.org/pages/charts.html
Các biểu đồ dữ liệu cũng trông khá ổn: https://lets-plot.org/pages/charts.html#discrete-icon-discre...
Biểu đồ phân phối cũng vậy: https://lets-plot.org/pages/charts.html#visualization-of-dis...
Tò mò không biết dự án này thế nào nếu so với
plotnine, một thư viện vẽ biểu đồ kiểu ggplot2 cho PythonNhược điểm của các thư viện họ ggplot trong những ngôn ngữ không phải R là bạn mất đi số lượng khổng lồ các thư viện bổ trợ[1] tuyệt vời có thể dùng với bản gốc. Cá nhân mình thường xử lý dữ liệu nhiều trong Python rồi xuất sang R, và tạo toàn bộ đồ họa ở đó
Có cảm giác những người làm thống kê coi trọng đồ họa hơn và dành nhiều thời gian hơn để hoàn thiện chúng. Ngoài ra Copilot trợ giúp rất tốt với ngữ nghĩa và tùy chọn ggplot dựa trên R vì có nhiều tài liệu để học. Không rõ với các khác biệt tinh tế của những thư viện sao chép ggplot thì có được như vậy không
[1] https://youtu.be/7UjA_5gNvdw
Chỉ cần cung cấp đủ ngữ cảnh thì khả năng cao nó sẽ cho ra kết quả dùng được
Cái này cũng trông khá giống
plotnine[0], vốn cung cấp giao diện ngữ pháp đồ họa cho Python. Dù sao mình thích ggplot nên rất mong có ngày dùng cái này trong nghiên cứuSẽ tuyệt nếu có thể port hoặc triển khai lại
ggthemes,scientificplots[1] và các thư viện ggplot khác sang lets-plot0: https://plotnine.readthedocs.io/en/stable/
1: https://github.com/garrettj403/SciencePlots
Không hiểu vì sao lại cần. Có ai đang tha thiết tìm thêm một thư viện vẽ biểu đồ nữa à?
Seaborn thì tốt nhưng vẫn phải vật lộn với lớp trừu tượng rò rỉ trên matplotlib, khiến việc kết hợp trở nên khó khăn, và cũng khó có được tính tương tác. Vì vậy mình muốn một thứ như thế này. Mình muốn các biểu đồ tương tác tốt, nhanh và có cảm giác native, đến mức từng thử tự làm. Ggplot cho phép chỉ tập trung vào việc muốn vẽ gì và đưa dataframe vào, cái này cũng có vẻ như vậy
Có tutorial hoặc hướng dẫn lấy Python làm trung tâm nào về cách tạo biểu đồ theo kiểu ngữ pháp đồ họa này không? Hay phải đọc sách ggplot2 rồi chuyển ví dụ R sang Python?
https://vega.github.io/vega/docs/
Toàn bộ là Kotlin Multiplatform và chỉ đặt một wrapper Python mỏng lên trên. Khá bất ngờ
Vấn đề lớn nhất với các thư viện vẽ biểu đồ là chúng không xử lý tốt ngay lập tức hàng triệu điểm dữ liệu. Trong dự án khoa học dữ liệu lần trước, tôi đã thử tất cả các thư viện vẽ biểu đồ chính, nhưng khi vượt quá vài triệu điểm thì không có cái nào hoạt động cho ra hồn.
Tôi muốn có các biểu đồ có thể trực quan hóa và phóng to/thu nhỏ theo thời gian thực, và đó trở thành phần khó của dự án. Chỉ có một sản phẩm tuyên bố có thể xử lý bằng GPU trên đám mây, nhưng cần đăng ký trả phí và phải tải dữ liệu lên đám mây. Tôi không muốn thêm một thư viện nữa, mà muốn một thư viện thực sự hoạt động tốt và có thể tận dụng GPU cục bộ cho việc vẽ biểu đồ
Kéo xuống phần ví dụ sẽ thấy các biểu đồ có nhiều điểm: https://wwwtyro.github.io/candygraph/examples/dist/
https://github.com/epezent/implot
Java: https://github.com/SpaiR/imgui-java
Rust cũng có:
https://www.egui.rs/#Demo
Xem demo Open Plot là được. Trên web có lẽ chỉ cần biên dịch sang WASM. Có vẻ có thể chỉ làm phần biểu đồ bằng WASM rồi nhúng vào DOM hiện có
https://github.com/holoviz/datashader là một lựa chọn khá tốt trong hệ sinh thái Python
ggplot2 rất tuyệt cho việc khám phá dữ liệu. Từng là lợi thế không đối thủ của R
Với dashboard thì tôi thích Apache ECharts hơn:
https://github.com/ecomfe/awesome-echarts
Thật sự rất hay. Đây có phải là tái triển khai ggplot2 trong Python không?
pygglà một thư viện nhẹ chuyển đổi ngữ pháp ggplot của Python thành mã R ggplot2Nhược điểm là không tương tác và chạy trong R, còn ưu điểm là nó chạy triển khai ggplot bằng R của Hadley
https://github.com/sirrice/pygg
Theo tôi, việc sao chép thẳng ggplot hơi đáng thất vọng. ggplot không phải là câu trả lời cuối cùng cho thiết kế thư viện trực quan hóa
Ví dụ, trong ggplot có khái niệm scale gần như tương ứng chính xác với hàm. Điều này chỉ thêm vào thư viện những rườm rà khái niệm không cần thiết. Loại bỏ nó là một cải tiến dễ làm
Với matplotlib, phải dùng rất nhiều gần đây cộng thêm GitHub Copilot thì tôi mới có thể tiến gần đến mức đó