SVG Saja Sudah Cukup
(jon.recoil.org)- SVG adalah format grafis vektor sederhana berbasis XML, didukung di hampir semua platform, dan dapat menanamkan skrip untuk mewujudkan visualisasi interaktif
- Ketahanan format ini terbukti melalui alat visualisasi SVG yang dibuat dalam riset jaringan miselium di masa lalu, yang masih berjalan sempurna di browser modern meski sudah 20 tahun berlalu
- Dengan satu berkas SVG mandiri, pemuatan data, pemrosesan, visualisasi, dan interaksi semuanya dapat dilakukan di sisi klien
- Dalam kaitannya dengan konsep 'empat P' milik Anil (Permanence, Provenance, Permission, Placement), SVG menonjolkan keberlanjutan, kompatibilitas dengan pengelolaan versi, pemisahan izin, dan daya representasi spasial
- Seiring meningkatnya kemampuan komputasi browser modern, terbuka kemungkinan untuk mengimplementasikan seluruh pipeline analisis data di dalam SVG, yang menjadikannya alat penting untuk berbagi riset dan meningkatkan reproduktibilitas
Potensi SVG dan idealisme publikasi ilmiah
- SVG adalah grafis vektor berformat XML sederhana yang tampil tajam di semua perangkat dan dapat menanamkan skrip untuk membuat konten interaktif
- SVG memiliki kemampuan kuat yang tidak disadari oleh kebanyakan pengguna, dan potensi ini bisa dimanfaatkan lebih aktif
- Diajukan sebuah ideal bahwa makalah ilmiah seharusnya menyediakan lingkungan interaktif yang lengkap untuk eksplorasi data dan reproduksi eksperimen
- Beberapa eksperimen memang sulit direproduksi segera karena keterbatasan biaya dan waktu, tetapi untuk makalah di bidang ilmu komputer, hal ini sangat mungkin diwujudkan
Penemuan kembali alat visualisasi SVG dari 20 tahun lalu
- Saat menjadi peneliti postdoktoral di Departemen Ilmu Tumbuhan Cambridge, dibuat alat visualisasi berbasis SVG untuk riset sinergi jaringan miselium
- Dirancang agar data jaringan miselium yang tumbuh di cawan petri nyata dapat dieksplorasi
- Ketika SVG tersebut baru-baru ini dijalankan kembali, ternyata kode dari masa ketika Firefox 1.5 atau plugin Adobe SVG masih dibutuhkan tetap berjalan sempurna di browser modern
- Ini menjadi contoh yang menunjukkan kompatibilitas jangka panjang dan stabilitas format SVG
Struktur SVG yang sepenuhnya mandiri
- Dengan satu berkas SVG saja, pemuatan data, pemrosesan, visualisasi, dan interaksi semuanya dapat dilakukan
- Data bisa diambil dari repositori versi eksternal atau langsung disertakan di dalam berkas
- Seluruh komputasi berjalan di browser sisi klien, sehingga logika sisi server tidak diperlukan
- Dapat didistribusikan dan dibagikan dengan mudah melalui server web statis
Keterkaitan dengan 'empat P' milik Anil
- Permanence: SVG dapat diberi DOI seperti makalah atau dataset, dan fakta bahwa berkas yang dibuat 20 tahun lalu masih tetap berfungsi membuktikan hal ini
- Provenance: Karena SVG berbasis teks, ia kompatibel dengan sistem kontrol versi seperti Git; strategi pelacakan yang sama juga bisa diterapkan saat menggunakan data eksternal
- Permission: Karena data dan logika pemrosesan dipisahkan, model izin yang sama seperti pada data biasa dapat diterapkan
- Placement: SVG secara inheren memiliki ekspresi spasial, sehingga misalnya mudah digunakan untuk membuat visualisasi peta dunia
Peningkatan daya komputasi browser dan kemungkinan baru
- SVG yang dibuat 20 tahun lalu hanyalah alat visualisasi sederhana, tetapi dengan meningkatnya kemampuan komputasi browser modern, kini seluruh pipeline analisis data dapat diimplementasikan di dalam SVG
- Pemrosesan ini cukup ringan hingga kipas laptop pun tidak perlu berputar
SVG dalam ekosistem berbagi riset
- Bersama Jupyter notebooks, Marimo botebooks, kombinasi slipshow/x-ocaml, Forester, dan proyek notebook pribadi
- SVG ditambahkan sebagai alat yang mendukung berbagi dan perakitan ulang hasil riset dengan mudah
- Alat-alat ini merupakan bagian dari upaya berkelanjutan untuk membangun lingkungan riset kolaboratif dan dapat direproduksi
1 komentar
Opini Hacker News
Seluruh UI dirender dengan SVG, dan hasilnya bekerja jauh lebih baik dari yang saya duga
Nama proyeknya StageKeep, awalnya dibuat dengan React Three Fiber lalu direfaktor ke SVG
Saya terinspirasi dari konsep Signed Distance Function, dan menyukai ide fungsi atomik yang menerima input lalu menghasilkan SVG
Dengan SVG + CSS + JavaScript, hampir semua hal yang dulu dilakukan dengan Flash bisa dibuat, tetapi tidak ada alat authoring yang sebagus Flash
Pada akhirnya Flash menghilang, dan tidak ada yang benar-benar menggantikan posisinya sepenuhnya
Misalnya menganalisis dan mengimpor koreografi dari video Project21 atau Avantgardey
Salah satu solusinya adalah menyiapkan dua versi: SVG sumber untuk Inkscape, dan SVG distribusi dengan teks yang sudah diubah menjadi kurva
Rendering berbeda-beda antar-browser sehingga sulit mendapatkan hasil yang konsisten, dan SVG yang kompleks rentan mengalami kebocoran memori atau penurunan kecepatan rendering yang parah
Selain Inkscape, hampir tidak ada editor yang layak dipakai di Linux
Meski begitu, karena tidak ada alternatif yang benar-benar memadai, saya tetap memakai SVG, hanya saja saya berusaha menjaganya sesederhana mungkin
<foreignObject>, HTML bisa di-embed sehingga line wrapping teks memang jadi mungkinDi SVG 2, ini direncanakan selesai lewat properti
inline-sizePenyematan font juga sudah ada lewat elemen
<font>atau dengan memasukkan WOFF sebagai data URINamun, hal-hal seperti baseline teks atau kontrol scaling tetap merupakan spesifikasi yang belum matang
Dokumentasi terkait: SVG2 InlineSizeProperty, SVG11 Fonts
@font-facedi dalam<style>Tetapi ukuran file jadi membesar, jadi tidak direkomendasikan
Di Safari, pemilihan tetap dimungkinkan lewat elemen
<text>, jadi dalam kedua pendekatan pun tidak ada solusi yang benar-benar sempurnaBlog NVIDIA Illustrated Evo2 juga sangat mengesankan
Semua gambarnya terhubung ke situs web, dan bisa direproduksi di browser dengan DuckDB + WebR + ggplot
Contoh: demo Figure 1
Tetapi memungkinkan data dieksplorasi dari berbagai sudut pandang tetap merupakan ide yang menarik
PDF memiliki fitur interaktif yang terbatas, dan baik Word maupun PDF sama-sama lemah untuk penyematan multimedia
Jika yang dibutuhkan hanya grafis vektor, PostScript juga bisa menjadi alternatif
Karena saya tidak menyukai alat chart JS/PHP yang ada (pCharts, HighCharts, dll.), saya membuatnya sendiri, dan ternyata hasilnya cukup bagus
Dengan matematika saja kita bisa menghasilkan SVG yang rapi, dan bonus tambahannya adalah skalabilitas tak terbatas
Ini alat buatan kreator D3, ringkas, dan usability API-nya sangat baik
Tidak ada animasi, tetapi untuk chart paper itu sudah lebih dari cukup
Di garis dunia lain, mungkin Postscript-lah yang menjadi standar alih-alih HTML atau SVG
Itu contoh interaksi minimal dengan D3.js di atas SVG, dan setelah pertama kali melihat gaya Shan Carter, saya jadi ingin bergabung dengan timnya
Lewat HTTP server bawaan, saya menampilkan grafik suhu dan dial melalui web UI berbasis SVG, dan itu bekerja baik bersama JS
Sebagian besar kode lain yang saya tulis pada masa itu harus diperbaiki, tetapi SVG tetap sama
tetapi sekarang bahkan SVG dari 20 tahun lalu tetap berjalan tanpa masalah di kebanyakan browser
Untuk hal seperti kode QR atau peta kompleks, jika elemen DOM melebihi 100 maka mulai melambat, dan animasi juga lebih lambat dibanding canvas atau Lottie
Tautan proyek
Dalam instalasi seni teman saya, puluhan SVG catur diproyeksikan sekaligus, dan batas kemampuan browser ternyata cukup rendah
Hanya saja, dalam proses itu saya kehilangan beberapa fitur SVG
Saat memvisualisasikan model CAD, saya sedang mencari cara untuk hanya menerapkan perubahan parsial tanpa harus mengekspor seluruh file .step
Contoh tautan
Dibuat dengan Inkscape, dan langsung berjalan di browser