- SVG là định dạng đồ họa véc-tơ dựa trên XML đơn giản, được hỗ trợ trên gần như mọi nền tảng và có thể nhúng script để triển khai trực quan hóa tương tác
- Một công cụ trực quan hóa SVG được tạo trong nghiên cứu mạng lưới sợi nấm trước đây cho thấy rằng sau 20 năm, nó vẫn hoạt động hoàn hảo trên các trình duyệt mới nhất, qua đó chứng minh độ bền của định dạng
- Chỉ với một tệp SVG tự cung tự cấp có thể thực hiện toàn bộ quá trình nạp dữ liệu, xử lý, trực quan hóa và tương tác ở phía máy khách
- Trong bối cảnh khái niệm 4P của Anil (Permanence, Provenance, Permission, Placement), bài viết nhấn mạnh độ bền, khả năng tương thích quản lý phiên bản, phân tách quyền và sức biểu đạt không gian của SVG
- Với sức mạnh tính toán của trình duyệt hiện đại, đã mở ra khả năng triển khai toàn bộ pipeline phân tích dữ liệu bên trong SVG, điều này có ý nghĩa quan trọng như một công cụ tăng cường chia sẻ và tái lập nghiên cứu
Tiềm năng của SVG và lý tưởng của xuất bản khoa học
- SVG là đồ họa véc-tơ với định dạng XML đơn giản, hiển thị sắc nét trên mọi thiết bị và có thể tạo nội dung tương tác bằng cách nhúng script
- Nó sở hữu một khả năng mạnh mẽ mà phần lớn người dùng chưa nhận ra, và có thể được tận dụng sâu hơn
- Đưa ra một lý tưởng rằng các bài báo khoa học nên cung cấp một môi trường tương tác đầy đủ để hỗ trợ việc khám phá dữ liệu và tái hiện thí nghiệm
- Một số thí nghiệm khó thực hiện lại ngay lập tức do hạn chế chi phí và thời gian, nhưng trong bài báo khoa học máy tính, điều này hoàn toàn khả thi
Tái phát hiện công cụ trực quan hóa SVG 20 năm trước
- Trong thời gian làm nghiên cứu sau tiến sĩ tại ngành Khoa học Thực vật Cambridge, tôi đã tạo công cụ trực quan hóa dựa trên SVG cho nghiên cứu về sự cộng sinh của mạng lưới sợi nấm
- Được thiết kế để khám phá dữ liệu mạng lưới sợi nấm phát triển trong đĩa Petri thực tế
- Khi chạy lại SVG này gần đây, thấy rằng mã từ thời kỳ cần Firefox 1.5 hoặc plugin SVG của Adobe vẫn hoạt động hoàn hảo trên trình duyệt hiện đại
- Đây là một ví dụ cho thấy tính tương thích dài hạn và độ ổn định của định dạng SVG
Cấu trúc của SVG tự cấp tự túc hoàn chỉnh
- Một tệp SVG đơn lẻ có thể xử lý việc nạp dữ liệu, xử lý, trực quan hóa và tương tác
- Dữ liệu có thể được lấy từ kho phiên bản bên ngoài hoặc nhúng trực tiếp trong tệp
- Mọi tính toán đều được thực thi trong trình duyệt phía máy khách, nên không cần logic phía máy chủ
- Có thể triển khai và chia sẻ dễ dàng trên máy chủ web tĩnh
Liên kết với 4P của Anil
- Permanence (Tính bền vững): SVG có thể nhận DOI như một bài báo hoặc bộ dữ liệu, và việc một tệp được tạo ra cách đây 20 năm vẫn hoạt động đã chứng minh điều đó
- Provenance (Nguồn gốc): SVG là dựa trên văn bản, nên tương thích với các hệ thống quản lý phiên bản như Git; cùng một chiến lược truy vết có thể áp dụng khi dùng dữ liệu bên ngoài
- Permission (Quyền): Dữ liệu và logic xử lý được tách rời, cho nên có thể áp dụng cùng mô hình quyền như dữ liệu thông thường
- Placement (Không gian): SVG có bản chất biểu hiện không gian, cho thấy sự dễ dàng khi tạo các ví dụ trực quan hóa bản đồ thế giới
Nâng cao năng lực tính toán trình duyệt và khả năng mới
- Công cụ trực quan hóa SVG được tạo 20 năm trước chỉ là một công cụ trực quan hóa đơn giản, nhưng với nâng cấp năng lực tính toán của trình duyệt hiện đại, giờ đây có thể thực hiện được toàn bộ pipeline phân tích dữ liệu ngay bên trong SVG
- Ngay cả các phép tính nhẹ đến mức quạt của máy tính xách tay không quay đều đủ xử lý
SVG trong hệ sinh thái chia sẻ nghiên cứu
- Cùng với Jupyter Notebook, Marimo botebooks, slipshow/x-ocaml, Forester, và dự án sổ tay cá nhân
- SVG được bổ sung như một công cụ hỗ trợ chia sẻ và tái tổ hợp kết quả nghiên cứu một cách dễ dàng
- Những công cụ này là một phần của nỗ lực liên tục nhằm xây dựng môi trường nghiên cứu hợp tác và có thể tái lập
1 bình luận
Ý kiến trên Hacker News
Tôi render toàn bộ UI bằng SVG, và nó hoạt động tốt hơn mong đợi
Tên dự án là StageKeep, ban đầu được làm bằng React Three Fiber rồi sau đó refactor sang SVG
Tôi lấy cảm hứng từ khái niệm Signed Distance Function, và rất thích ý tưởng về các hàm nguyên tử nhận đầu vào rồi xuất ra SVG
Với SVG + CSS + JavaScript, gần như có thể làm mọi thứ từng làm bằng Flash, nhưng lại không có công cụ biên soạn tốt như Flash
Cuối cùng Flash đã biến mất, và cũng không có gì thực sự thay thế hoàn toàn vị trí đó
Ví dụ như phân tích và nhập biên đạo từ các video của Project21 hoặc Avantgardey
Một cách khắc phục là duy trì hai phiên bản: SVG gốc cho Inkscape, và SVG để phân phối với văn bản đã được chuyển thành đường cong
Việc render khác nhau giữa các trình duyệt khiến khó có được kết quả nhất quán, và SVG phức tạp thì dễ gặp rò rỉ bộ nhớ hoặc giảm tốc độ render nghiêm trọng
Ngoài Inkscape ra thì gần như không có editor nào thật sự dùng được trên Linux
Dù vậy, vì không có lựa chọn thay thế nên tôi vẫn dùng SVG, chỉ là cố giữ nó đơn giản nhất có thể
<foreignObject>thì vẫn có thể xuống dòng văn bảnTrong SVG 2, việc này dự kiến sẽ được giải quyết bằng thuộc tính
inline-sizeViệc nhúng font bằng phần tử
<font>hoặc đưa WOFF vào data URI đã tồn tại từ lâuTuy nhiên, các phần như đường cơ sở văn bản hay điều khiển scaling vẫn là đặc tả chưa hoàn thiện
Tài liệu liên quan: SVG2 InlineSizeProperty, SVG11 Fonts
@font-facetrong<style>Nhưng không được khuyến khích vì kích thước tệp sẽ tăng lên nhiều
Trên Safari, có thể chọn bằng phần tử
<text>, nên dù chọn cách nào thì cũng chưa phải giải pháp hoàn hảoBài Illustrated Evo2 blog của NVIDIA cũng rất ấn tượng
Mọi hình đều được gắn với website, và có thể tái hiện ngay trên trình duyệt bằng DuckDB + WebR + ggplot
Ví dụ: demo Figure 1
Nhưng cho phép khám phá dữ liệu từ nhiều góc nhìn khác nhau vẫn là một ý tưởng thú vị
PDF có tính tương tác hạn chế, còn cả Word lẫn PDF đều yếu ở phần nhúng multimedia
Nếu chỉ cần đồ họa vector thì PostScript cũng có thể là một lựa chọn thay thế
Vì không thích các công cụ biểu đồ JS/PHP có sẵn (pCharts, HighCharts, v.v.) nên tôi tự làm, và bất ngờ là nó hoạt động khá tốt
Chỉ với toán học là có thể tạo ra SVG gọn gàng, và thêm vào đó là khả năng mở rộng vô hạn
Đây là công cụ do tác giả D3 tạo ra, ngắn gọn và có API rất dễ dùng
Không có animation, nhưng với biểu đồ dùng trong bài báo thì là quá đủ
Ở một dòng thời gian khác, có lẽ Postscript đã trở thành tiêu chuẩn thay vì HTML hay SVG
Đây là một ví dụ dùng D3.js để thêm mức tương tác tối thiểu lên trên SVG, và cũng là lần đầu tôi thấy phong cách của Shan Carter khiến tôi muốn gia nhập đội của anh ấy
Thông qua HTTP server nhúng, nó hiển thị biểu đồ nhiệt độ và núm xoay bằng web UI dựa trên SVG, và hoạt động tốt cùng với JS
Phần lớn những đoạn mã khác viết vào thời đó đều phải sửa, nhưng SVG thì vẫn nguyên vẹn
nhưng giờ thì ngay cả SVG từ 20 năm trước cũng chạy ổn trên hầu hết trình duyệt
Nếu có hơn 100 phần tử DOM như QR code hay bản đồ phức tạp thì nó sẽ chậm, còn animation cũng chậm hơn canvas hoặc Lottie
Liên kết dự án
Trong một tác phẩm sắp đặt nghệ thuật của bạn tôi, hàng chục SVG cờ vua được chiếu cùng lúc, và giới hạn mà trình duyệt chịu được hóa ra khá thấp
Dù vậy, trong quá trình đó tôi cũng mất đi một số tính năng của SVG
Khi trực quan hóa mô hình CAD, tôi đang tìm cách phản ánh chỉ những thay đổi từng phần thay vì export toàn bộ tệp .step
Liên kết ví dụ
Được tạo bằng Inkscape, và chạy trực tiếp trong trình duyệt