3 điểm bởi GN⁺ 2023-07-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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 PyCharmIntelliJ 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

1 bình luận

 
GN⁺ 2023-07-16
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 Python

    • Mình thắc mắc liệu ggplot2 có đủ tổng quát để tạo ra bất kỳ đồ thị nào mình muốn, hay nó có màu sắc riêng khá mạnh về cách thức hoặc loại đồ thị có thể tạo. Tuy vậy, điểm hay nhất của thư viện này có thể là dùng được cả trong Kotlin
  • Nhượ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

    • Video hay. Nó cho thấy rõ R mang lại sức biểu đạt bổ sung trong việc giải thích và trực quan hóa. Có khi học một chút R còn tốt hơn là học thêm một wrapper vẽ biểu đồ Python nữa
    • Đúng là Copilot hỗ trợ tốt ngữ nghĩa và tùy chọn ggplot dựa trên R, nhưng mình không nghĩ những khác biệt như vậy sẽ là trở ngại lớn với mô hình ngôn ngữ lớn. Cứ thử chuyển script từ ngôn ngữ này sang ngôn ngữ khác sẽ thấy mô hình ngôn ngữ lớn khái quát hóa tốt đến đâu, dù tất nhiên không hoàn hảo
      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ứu
    Sẽ 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-plot
    0: 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 à?

    • Chỉ riêng việc nó có thể tạo biểu đồ thống kê và không dựa trên matplotlib đã là một khởi đầu tốt. Plotly thì khó dùng, Altair có tính khả dụng không tốt lắm, bokeh thì theo phong cách mệnh lệnh giống matplotlib và hơi nặng
      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ó vẻ được tạo ra để dùng trong Kotlin Notebooks mới của JetBrains
    • Ai cũng muốn cả. Các lựa chọn thay thế đều có nhược điểm lớn, nên có thêm cạnh tranh là tốt
  • 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?

  • 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 đồ

  • 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? pygg là một thư viện nhẹ chuyển đổi ngữ pháp ggplot của Python thành mã R ggplot2
    Nhượ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

    • Bất kể ggplot có khiếm khuyết gì, không có matplotlib, base R hay thư viện vẽ biểu đồ nào khác giúp tôi tạo biểu đồ gần với tốc độ tôi gõ như vậy. Với ggplot thì tôi làm được mà hầu như không cần trợ giúp
      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 đó
    • scale không chính xác là một hàm. Vì để vẽ trục và chú giải thì cũng cần hàm nghịch đảo. Và trên thực tế, phần lớn độ phức tạp của scale đến từ trục và chú giải