1 điểm bởi GN⁺ 3 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Flint là một ngôn ngữ trực quan hóa có thể tự động quyết định cách phân tích, trục, định dạng và màu sắc dựa trên ý nghĩa của các trường dữ liệu, cho phép tạo và chỉnh sửa biểu đồ mà không cần cấu hình mức thấp
  • Suy luận các cấu hình chi tiết cần cho mã hóa trực quan bằng kiểu ngữ nghĩa (semantic type) như Rank, YearMonth, Delta, Temperature
  • Điều chỉnh kích thước, khoảng cách và bố cục bằng mô hình bố cục đàn hồi và nguyên tắc banking; khi biểu đồ mở rộng, nó mở rộng canvas và giảm độ rộng band để xử lý bố cục dày đặc
  • Hỗ trợ 50 loại biểu đồ trên Vega-Lite, ECharts, Chart.js, Plotly, đồng thời tạo cả biểu đồ Excel native có thể chỉnh sửa qua Office.js
  • Có thể chuyển đổi backend trong một giao diện duy nhất để tận dụng điểm mạnh của từng công cụ như sunburst phân cấp của ECharts, trace thống kê/phân tích của Plotly và khả năng chỉnh sửa ngay trong workbook của Excel

Đặc tả dựa trên ngữ nghĩa và tối ưu hóa tự động

  • Flint suy luận cách phân tích, thang đo, trục, định dạng và hệ màu bằng kiểu ngữ nghĩa biểu thị ý nghĩa của trường dữ liệu như Rank, YearMonth, Delta, Temperature
    • Trong heatmap thể hiện mức tăng giảm người dùng mới ròng theo từng game và từng tháng, game được chỉ định là Category, periodYearMonth, newUsersProfit
    • Dựa trên ngữ nghĩa đã chỉ định, nó tự động xác định bộ phân tích giá trị thời gian, định dạng trục, hệ màu phân kỳ và điểm giữa
  • Tối ưu hóa bố cục tự động áp dụng mô hình bố cục đàn hồi và nguyên tắc banking để quản lý động kích thước, khoảng cách và cách sắp xếp sao cho phù hợp với canvas
    • Khi biểu đồ cột nhóm tăng từ cấu hình thưa 5 × 3 lên cấu hình dày 22 × 3, nó mở rộng canvas và giảm độ rộng band
    • Cách hoạt động này tương tự như lò xo tự định vị bên trong một container có thể co giãn
  • Có thể thay đổi thiết kế chỉ bằng chuyển loại biểu đồ và nối lại mã hóa trực quan mà không cần trực tiếp xử lý các tham số mức thấp dễ vỡ
    • Biểu đồ cột facet thể hiện phân bố dân số theo giới tính và độ tuổi của điều tra dân số Mỹ năm 2000 có thể chuyển thành biểu đồ tháp dân số chỉ bằng cách đổi loại biểu đồ, còn các thiết lập mức thấp khác do trình biên dịch xử lý

Hỗ trợ backend và các bản phát hành gần đây

  • Hỗ trợ 50 loại biểu đồ trên Vega-Lite, ECharts, Chart.js và Plotly, với 121 ví dụ theo từng backend trong gallery
    • Giao diện hợp nhất che giấu sự khác biệt về API và mô hình lập trình giữa các backend
    • ECharts có thể dùng cho sunburst phân cấp, còn Plotly phù hợp cho các trace thống kê và phân tích
    • Xuất ra biểu đồ Excel native có thể chèn vào workbook và chỉnh sửa qua Office.js
  • v0.4.0 vào ngày 24 tháng 7 năm 2026 đã bổ sung 38 loại biểu đồ Plotly và 18 mẫu biểu đồ Excel native có thể chỉnh sửa
  • v0.3.0 vào ngày 19 tháng 7 năm 2026 đã thêm widget biểu đồ động để chuyển loại biểu đồ và chỉnh sửa thuộc tính tại chỗ
  • v0.2.2 vào ngày 15 tháng 7 năm 2026 đã bổ sung chế độ compact dodge và bố cục violin theo nhóm

1 bình luận

 
Các ý kiến trên Hacker News
  • Tôi cho rằng ngay cả trong thời đại AI, API của ggplot vẫn là API vẽ biểu đồ tốt nhất. “Grammar of Graphics” không chỉ là một câu khẩu hiệu marketing, mà là một nỗ lực thực sự nhằm tạo ra một ngữ pháp có thể biểu đạt mọi loại đồ họa định tính khả dĩ
    Quá trình đó được trình bày trong https://link.springer.com/book/10.1007/0-387-28695-0. Khi tìm hiểu các đồ thị cũ được vẽ bằng giấy bút, tôi phát hiện cuốn sách này; các biểu đồ trong báo cáo thường niên của Ngân hàng Dự trữ Úc giai đoạn 1960–1980 có cá tính riêng, trong khi đến đầu những năm 2000 thì đã chuyển thành các biểu đồ Excel nhạt nhòa
    Dù ggplot không tái hiện hoàn toàn sức hút của các biểu đồ cũ, có vẻ nó đã tham khảo rất nhiều cách truyền đạt thông tin của chúng. Mục 20.1 tái hiện biểu đồ Minard mô tả chiến dịch Nga của Napoleon; có thể xem ví dụ tương tự tại https://www.andrewheiss.com/blog/2017/08/10/exploring-minard...
    Kết quả trông đẹp hơn pyplot và các API xây dựng trên nó; pyplot dường như bị hạn chế khá nhiều ở phần render dựa trên raster và xử lý văn bản. Vì ggplot nằm trong hệ sinh thái R nên ít được các kỹ sư phần mềm biết đến hơn, nhưng tôi mong các hệ sinh thái Node.js và Python cũng tham khảo API này nhiều hơn

    • Grammar of Graphics của Wilkinson là nguồn cảm hứng cho ggplot, và giáo trình đó hoàn toàn không nhắc đến ggplot
      Tôi cũng đã công bố Algraf, một DSL được tạo ra với cảm hứng từ cùng triết lý: https://williamcotton.github.io/algraf/demos. Demo cũng có biểu đồ Minard
    • plotnine cho Python cũng đáng xem: https://raw.githubusercontent.com/rstudio/cheatsheets/main/p...
      Nó được phát triển trong hệ RStudio, nơi Hadley Wickham — người tạo ra ggplot — từng làm việc, và hiện được Posit, nơi ông đang làm việc, tài trợ
    • Đặc tả JSON của backend Vega-Lite nhìn chung cũng đi theo ý tưởng của Grammar of Graphics. Tôi thích ggsql được giới thiệu gần đây trên HN hơn: https://ggsql.org/
    • Ngữ nghĩa của Grammar of Graphics vốn đã lý tưởng cho cả con người lẫn agent. ggsql triển khai nó dưới dạng hàm do người dùng định nghĩa trong SQL, giúp agent dễ xử lý hơn, nên tôi không rõ Flint còn cung cấp thêm điều gì
    • Nếu muốn nét hấp dẫn như vẽ tay và sẵn sàng dùng METAPOST, có fiziko: https://github.com/jemmybutton/fiziko
  • Tôi đã thử cả Flint lẫn cách để AI trực tiếp tạo đặc tả Vega-Lite, và Flint không phải là giải pháp tốt hơn
    Flint ổn khi tùy biến ở mức thấp các loại biểu đồ đã định sẵn, nhưng nếu agent hoặc sub-agent trực tiếp tạo đặc tả Vega thì có thể tạo ra trực quan hóa linh hoạt và chất lượng hơn nhiều, chẳng hạn như hiển thị giá trị nhỏ nhất/lớn nhất của chuỗi thời gian hoặc các marker chú thích cho ngày xảy ra sự kiện cụ thể
    Tuy nhiên Vega-Lite cần kiểm chứng đặc tả và hướng dẫn cụ thể, đồng thời phải liên tục xử lý lỗi và hành vi đặc thù. Nếu muốn bắt đầu nhanh mà không xây dựng việc tạo biểu đồ thành một kỹ năng riêng, Flint ổn định hơn

  • Có vẻ như họ muốn xử lý nhiều backend biểu đồ qua một giao diện duy nhất, nhưng nếu AI có thể viết Flint thì chẳng phải cứ để nó viết thẳng mã backend là được sao? Không rõ vì sao cần làm cho backend có thể hoán đổi
    Dù vậy, nếu là API đơn giản dành cho LLM thì nó có lợi thế là tăng hiệu quả token

    • Mỗi backend biểu đồ hỗ trợ các kiểu khác nhau. Nếu có thể dễ dàng chuyển đổi giữa sunburst của ECharts và biểu đồ cột facet của Vega-Lite như ví dụ trong dự án, thì điều đó rất hữu ích
  • Microsoft/Flint-Chart cũng đã được giới thiệu vào ngày 2/7/2026: https://github.com/microsoft/flint-chart, https://news.ycombinator.com/item?id=48756577
    Ngày 8/7, nó lại xuất hiện với tiêu đề “Show HN: Microsoft releases Flint, a visualization language for AI agents”: https://microsoft.github.io/flint-chart/#/, https://news.ycombinator.com/item?id=48834924

  • Chỉ cần nói “hãy tạo biểu đồ XYZ bằng plotly” thì có vấn đề gì?

    • Trong trực quan hóa dữ liệu tự động, cách đó cần một sandbox để chạy mã JavaScript hoặc Python được tạo ra. Với một đặc tả như Flint, ta có thể kiểm chứng rồi vẽ ngay; nếu LLM tạo Flint tốt hơn Vega-Lite thì nó có thể hữu ích
  • 22 ngày trước cũng đã có một cuộc thảo luận quy mô lớn hơn: https://news.ycombinator.com/item?id=48834924

  • DSL cho AI không hợp lý lắm. Các mô hình đã được huấn luyện trên những thư viện đồ họa hiện có và đã xử lý chúng khá tốt
    Về dài hạn, sau khi Flint được công bố, các phòng lab có thể tạo “benchmark đồ họa” để overfit vào DSL này, nhưng có vẻ sẽ cần quá nhiều công sức

  • Tôi không rõ từ mức nào thì trừu tượng hóa trở nên quá đà. Plotly hay Plotly Express chưa đủ sao, và thêm một đặc tả JSON nữa thì mở ra kỷ nguyên mới bằng cách nào?

  • Thú vị đấy, nhưng tôi không chắc có thật sự cần không. Đã có rất nhiều thư viện biểu đồ trưởng thành, bao gồm Apache ECharts, nên rốt cuộc trông giống như đang phát minh lại bánh xe
    Một công cụ mới ra mắt, rồi các tính năng tiếp tục được thêm vào, sau đó một công cụ khác với thiết kế và cú pháp hơi khác lại thay thế công cụ ban đầu — chuyện đó cứ lặp đi lặp lại
    Cũng có thể tận dụng điểm mạnh riêng của từng backend: ECharts cho sunburst phân cấp, Plotly cho đường theo dõi thống kê/phân tích, Excel cho biểu đồ cần chỉnh sửa trong workbook. Hoặc chọn một thư viện biểu đồ mình thích và học kỹ các tính năng của nó; như vậy tốt hơn là chỉ trộn các preset của nhiều thư viện rồi không tinh chỉnh chi tiết