- SVG, basit bir XML tabanlı vektör grafik biçimidir; neredeyse tüm platformlarda desteklenir ve gömülü scriptlerle etkileşimli görselleştirmeler oluşturabilir
- Geçmişte miselyum ağları araştırması için üretilen bir SVG görselleştirme aracının, 20 yıl sonra bugün bile modern tarayıcılarda kusursuz çalışması, biçimin dayanıklılığını kanıtlıyor
- Tek bir kendi kendine yeterli SVG dosyası ile veri yükleme, işleme, görselleştirme ve etkileşimin tamamı istemci tarafında gerçekleştirilebilir
- Anil’in “dört P”si (Permanence, Provenance, Permission, Placement) kavramıyla bağlantılı olarak SVG’nin kalıcılığı, sürüm kontrolü uyumluluğu, yetki ayrımı ve mekânsal ifade gücü vurgulanıyor
- Modern tarayıcıların hesaplama gücünün artmasıyla tüm veri analizi hattının SVG içinde uygulanabilmesinin yolu açıldı; bu da araştırma paylaşımı ve yeniden üretilebilirlik açısından önemli bir araç haline geliyor
SVG’nin potansiyeli ve bilimsel yayıncılığın ideali
- SVG, basit bir XML biçimindeki vektör grafiktir; her cihazda net görüntülenir ve gömülü scriptlerle etkileşimli içerik üretilebilir
- Çoğu kullanıcının fark etmediği güçlü yeteneklere sahiptir ve bunlardan daha aktif yararlanılabilir
- Bilimsel makalelerin, veri keşfini ve deneylerin yeniden üretilmesini destekleyen tam etkileşimli bir ortam sunması gerektiği fikri ortaya konuyor
- Bazı deneyler maliyet ve zaman kısıtları nedeniyle hemen yeniden üretilemese de, bilgisayar bilimi alanındaki makalelerde bu oldukça gerçekleştirilebilir
20 yıllık SVG görselleştirme aracının yeniden keşfi
- Cambridge Bitki Bilimleri Bölümü’nde doktora sonrası araştırmacı olarak çalışırken, miselyum ağlarının sinerji araştırması için SVG tabanlı bir görselleştirme aracı geliştirildi
- Gerçek petri kaplarında büyüyen miselyum ağlarına ait verilerin keşfedilmesine imkân verecek şekilde tasarlandı
- Yakın zamanda ilgili SVG yeniden çalıştırıldığında, Firefox 1.5 veya Adobe SVG eklentisi gerektiren dönemden kalan kodun modern tarayıcılarda bile kusursuz çalıştığı görüldü
- Bu, SVG biçiminin uzun vadeli uyumluluğu ve kararlılığını gösteren bir örnek
Tamamen kendi kendine yeten SVG’nin yapısı
- Tek bir SVG dosyası ile veri yükleme, işleme, görselleştirme ve etkileşimin tamamı gerçekleştirilebilir
- Veriler harici bir sürüm deposundan alınabilir ya da dosyanın içine doğrudan gömülebilir
- Tüm işlemler istemci tarafındaki tarayıcıda yürütülür ve sunucu tarafı mantığı gerekmez
- Statik bir web sunucusunda kolayca dağıtılabilir ve paylaşılabilir
Anil’in “dört P”si ile bağlantısı
- Permanence (Kalıcılık): SVG, makale veya veri kümesi gibi DOI alabilir; 20 yıl önce oluşturulan bir dosyanın hâlâ çalışması bunu kanıtlıyor
- Provenance (Köken takibi): SVG metin tabanlı olduğu için Git gibi sürüm kontrol sistemleriyle uyumludur; harici veri kullanıldığında da aynı izleme stratejisi uygulanabilir
- Permission (Yetki yönetimi): Veri ile işleme mantığı ayrıldığı için, sıradan verilerle aynı yetki modeli uygulanabilir
- Placement (Mekânsallık): SVG, doğası gereği mekânsal bir ifade sunar; örneğin dünya haritası görselleştirmeleri üretmek kolaydır
Tarayıcı hesaplama gücündeki artış ve yeni olasılıklar
- 20 yıl önce üretilen SVG basit bir görselleştirme aracıydı; ancak modern tarayıcıların artan hesaplama gücü sayesinde artık tüm veri analizi hattı SVG içinde uygulanabilir
- Dizüstü bilgisayarın fanını bile çalıştırmayacak kadar hafif işlem gücüyle bu mümkün olabilir
Araştırma paylaşım ekosisteminde SVG
- Jupyter not defterleri, Marimo botebooks, slipshow/x-ocaml kombinasyonu, Forester, kişisel notebook projeleri ile birlikte
- SVG de araştırma sonuçlarının kolay paylaşımı ve yeniden birleştirilmesini destekleyen bir araç olarak ekleniyor
- Bu araçlar, işbirliğine dayalı ve yeniden üretilebilir araştırma ortamları kurmaya yönelik sürekli çabaların bir parçası
1 yorum
Hacker News yorumları
Tüm UI’ı SVG olarak render etmiştim ve beklediğimden çok daha iyi çalışmıştı
Projenin adı StageKeep; başlangıçta React Three Fiber ile yapılmıştı, sonra SVG’ye refactor edildi
Signed Distance Function kavramından ilham aldım ve girdi alıp SVG çıktısı veren atomik fonksiyonlar fikrini sevdim
SVG + CSS + JavaScript ile Flash’ta yapılan hemen her şeyi yapmak mümkündü ama Flash kadar iyi içerik oluşturma araçları yoktu
Sonunda Flash ortadan kalktı ve onun yerini tam anlamıyla dolduran bir şey de çıkmadı
Mesela Project21 veya Avantgardey videolarından koreografiyi analiz edip içe aktarmak gibi
Çözüm olarak, Inkscape için kaynak SVG ile metni eğrilere dönüştürülmüş dağıtım amaçlı SVG olmak üzere iki sürüm tutmak mümkün
Tarayıcılar arasında render sonucu farklı olduğundan tutarlı çıktı almak zor ve karmaşık SVG’lerde bellek sızıntısı ya da render performansı düşüşü ciddi olabiliyor
Inkscape dışında Linux’ta doğru düzgün kullanılabilecek editör de neredeyse yok
Buna rağmen alternatif olmadığı için hâlâ SVG kullanıyorum ama mümkün olduğunca sade tutmaya çalışıyorum
<foreignObject>ile gömerseniz metin satır sonu mümkün oluyorSVG 2’de bunun
inline-sizeözelliğiyle çözülmesi planlanıyorFont gömme için de
<font>öğesi ya da WOFF’u data URI olarak ekleme yöntemi zaten mevcutAma metin taban çizgisi veya ölçekleme denetimi gibi kısımlar hâlâ tamamlanmamış spesifikasyonlar durumunda
İlgili belgeler: SVG2 InlineSizeProperty, SVG11 Fonts
<style>içindeki@font-faceile base64 kodlanmış fontlar gömülebiliyorAma dosya boyutunu büyüttüğü için tavsiye etmem
Safari’de
<text>öğesiyle seçim yapılabildiğinden, aslında iki yaklaşımın da kusursuz bir çözüm olduğu söylenemezNVIDIA’nın Illustrated Evo2 blogu da etkileyiciydi
Tüm şekiller bir web sitesiyle bağlı ve DuckDB + WebR + ggplot ile tarayıcı içinde yeniden üretilebiliyor
Örnek: Şekil 1 demosu
Ama veriyi farklı açılardan keşfetmeye imkân vermek ilginç bir fikir
PDF’nin etkileşim özellikleri sınırlı ve hem Word hem de PDF multimedya gömme konusunda zayıf
Sadece vektör grafik gerekiyorsa PostScript de bir alternatif olabilir
Mevcut JS/PHP grafik araçlarını (pCharts, HighCharts vb.) beğenmediğim için kendim yaptım ve şaşırtıcı biçimde iyi çalıştı
Sadece matematikle temiz SVG üretilebiliyor ve sonsuz ölçeklenebilirlik de cabasıydı
D3’ün yaratıcısının yaptığı bir araç; sade ve API kullanılabilirliği çok iyi
Animasyon yok ama makale grafiklerinde fazlasıyla yeterli
Başka bir evrende belki de HTML veya SVG yerine standart Postscript olurdu
SVG üzerine D3.js ile minimum etkileşim eklenmiş bir örnekti; Shan Carter’ın tarzını ilk kez orada görüp ekibine katılmak istemiştim
Gömülü HTTP sunucusu üzerinden SVG tabanlı web UI ile sıcaklık grafikleri ve kadranlar gösteriyordu; JS ile birlikte gayet iyi çalışıyordu
O dönemde yazdığım diğer kodların çoğunu düzeltmek gerekiyor ama SVG olduğu gibi duruyor
bugün 20 yıl önceki SVG’ler bile çoğu tarayıcıda sorunsuz çalışıyor
QR kodları veya karmaşık haritalar gibi 100’den fazla DOM öğesi olunca yavaşlıyor; animasyon da canvas veya Lottie’den daha yavaş
Proje bağlantısı
Bir arkadaşımın sanat enstalasyonunda aynı anda onlarca satranç SVG’si yansıtıldı ve tarayıcının dayanabildiği sınır oldukça düşüktü
Yine de bu süreçte SVG’nin bazı özelliklerini kaybettim
CAD modellerini görselleştirirken tüm
.stepdosyasını dışa aktarmadan yalnızca kısmi değişiklikleri yansıtmanın yolunu arıyorumÖrnek bağlantı
Inkscape ile hazırlanmıştı ve tarayıcıda doğrudan çalışıyordu