- SVG é um formato de gráficos vetoriais simples, baseado em XML, compatível com quase todas as plataformas e capaz de incorporar scripts para criar visualizações interativas
- Uma ferramenta de visualização em SVG criada no passado para pesquisa de redes miceliais ainda funciona perfeitamente em navegadores modernos, mesmo após 20 anos, comprovando a durabilidade do formato
- Com apenas um arquivo SVG autossuficiente, é possível fazer carregamento de dados, processamento, visualização e interação inteiramente no lado do cliente
- Em conexão com o conceito dos “quatro Ps” de Anil (Permanence, Provenance, Permission, Placement), o texto destaca a persistência do SVG, sua compatibilidade com controle de versão, a separação de permissões e sua expressividade espacial
- Com o aumento da capacidade de processamento dos navegadores modernos, abriu-se a possibilidade de implementar todo o pipeline de análise de dados dentro de um SVG, o que o torna uma ferramenta importante para ampliar o compartilhamento de pesquisas e a reprodutibilidade
O potencial do SVG e o ideal da publicação científica
- SVG é um gráfico vetorial em formato XML simples, exibido com nitidez em qualquer dispositivo e capaz de incorporar scripts para criar conteúdo interativo
- Ele tem recursos poderosos que a maioria das pessoas não percebe, e que poderiam ser usados de forma mais ativa
- O texto apresenta o ideal de que artigos científicos deveriam oferecer um ambiente interativo completo que apoiasse a exploração de dados e a reprodução de experimentos
- Alguns experimentos são difíceis de reproduzir imediatamente por restrições de custo e tempo, mas isso é plenamente viável em artigos da área de ciência da computação
Redescoberta de uma ferramenta de visualização em SVG de 20 anos atrás
- Durante o período de pós-doutorado no Departamento de Ciências Vegetais de Cambridge, foi criada uma ferramenta de visualização baseada em SVG para o estudo da sinergia em redes miceliais
- Ela foi projetada para permitir a exploração de dados de redes miceliais cultivadas em placas de Petri reais
- Ao executar esse SVG novamente recentemente, constatou-se que um código da época em que exigia Firefox 1.5 ou o plug-in Adobe SVG ainda funciona perfeitamente em navegadores modernos
- Esse é um exemplo da compatibilidade e estabilidade de longo prazo do formato SVG
Estrutura de um SVG totalmente autossuficiente
- Com um único arquivo SVG, é possível realizar carregamento de dados, processamento, visualização e interação
- Os dados podem ser obtidos de um repositório externo com versionamento ou incorporados diretamente no próprio arquivo
- Todo o processamento roda no navegador do lado do cliente, sem necessidade de lógica no servidor
- É fácil distribuir e compartilhar em um servidor web estático
Conexão com os “quatro Ps” de Anil
- Permanence: um SVG pode receber um DOI como um artigo ou conjunto de dados, e o fato de arquivos criados há 20 anos ainda funcionarem comprova isso
- Provenance: como o SVG é baseado em texto, ele é compatível com sistemas de controle de versão como Git, e a mesma estratégia pode ser aplicada quando usa dados externos
- Permission: como os dados e a lógica de processamento estão separados, pode-se aplicar o mesmo modelo de permissões usado para dados comuns
- Placement: o SVG possui uma expressão espacial intrínseca, o que facilita, por exemplo, a criação de visualizações em mapas-múndi
Mais poder computacional no navegador e novas possibilidades
- O SVG criado 20 anos atrás era uma ferramenta de visualização simples, mas, com o aumento da capacidade de processamento dos navegadores modernos, agora é possível implementar todo o pipeline de análise de dados dentro do SVG
- Isso pode ser processado com operações leves o suficiente para nem fazer o ventilador do notebook girar
O SVG no ecossistema de compartilhamento de pesquisa
- Junto com Jupyter notebooks, Marimo botebooks, a combinação slipshow/x-ocaml, Forester e projetos de notebook pessoal
- O SVG passa a ser mais uma ferramenta para facilitar o compartilhamento e a recombinação de resultados de pesquisa
- Essas ferramentas fazem parte de esforços contínuos para construir um ambiente de pesquisa colaborativo e reprodutível
1 comentários
Comentários do Hacker News
Renderizei toda a UI em SVG, e funcionou surpreendentemente bem
O projeto se chama StageKeep e originalmente foi feito com React Three Fiber, depois refatorado para SVG
Fui inspirado pelo conceito de Signed Distance Function e gostei da ideia de uma função atômica que recebe entrada e produz SVG
Com SVG + CSS + JavaScript dava para implementar quase tudo que se fazia com Flash, mas não existiam ferramentas de autoria tão boas quanto as do Flash
No fim, o Flash desapareceu, e nada ocupou completamente o seu lugar
Por exemplo, algo como analisar e importar coreografias de vídeos do Project21 ou do Avantgardey
Uma solução é manter duas versões: o SVG original para Inkscape e um SVG para distribuição com o texto convertido em curvas
A renderização varia entre navegadores, então é difícil obter resultados consistentes, e SVGs complexos sofrem bastante com vazamento de memória e queda de desempenho de renderização
Fora o Inkscape, quase não há editores decentes para Linux
Mesmo assim, continuo usando SVG por falta de alternativa, mas tento mantê-lo o mais simples possível
<foreignObject>, passa a ser possível fazer quebra de linha de textoNo SVG 2, isso deve ser resolvido com a propriedade
inline-sizeEmbutir fontes já é possível com o elemento
<font>ou incluindo WOFF como data URIMas partes como linha de base do texto e controle de escala ainda são uma especificação incompleta
Documentação relacionada: SVG2 InlineSizeProperty, SVG11 Fonts
@font-facedentro de<style>Mas isso aumenta muito o tamanho do arquivo, então não é recomendado
No Safari, a seleção funciona com elementos
<text>, então de todo modo não existe solução perfeitaO blog Illustrated Evo2 da NVIDIA também foi marcante
Todas as figuras estão ligadas a um site e podem ser reproduzidas no navegador com DuckDB + WebR + ggplot
Exemplo: demo da Figure 1
Ainda assim, a ideia de permitir explorar os dados por diferentes perspectivas é interessante
PDF tem recursos interativos limitados, e tanto Word quanto PDF são fracos para incorporar multimídia
Se só forem necessários gráficos vetoriais, PostScript também pode ser uma alternativa
Não gostei das ferramentas de gráficos em JS/PHP que existiam (pCharts, HighCharts etc.), então implementei a minha, e acabou funcionando melhor do que eu esperava
Dá para gerar SVG limpo só com matemática, com a vantagem extra de escalabilidade infinita
É uma ferramenta feita pelo criador do D3, concisa e com ótima usabilidade de API
Não tem animação, mas é mais que suficiente para gráficos de artigos
Em outra linha do tempo, talvez o padrão tivesse virado Postscript em vez de HTML ou SVG
É um exemplo de interação mínima com D3.js sobre SVG, e foi a primeira vez que vi o estilo do Shan Carter e pensei que queria entrar para a equipe dele
Por meio de um servidor HTTP embutido, exibia gráficos de temperatura e mostradores numa interface web baseada em SVG, e funcionava bem junto com JS
A maioria dos outros códigos que escrevi naquela época precisa de correção, mas o SVG permanece igual
Hoje, porém, até SVGs de 20 anos atrás funcionam sem problemas na maioria dos navegadores
Se houver mais de 100 elementos DOM, como em QR codes ou mapas complexos, ele fica lento, e animações também são mais lentas do que com canvas ou Lottie
Link do projeto
Em uma instalação artística de um amigo, projetamos dezenas desses SVGs de xadrez ao mesmo tempo, e o limite que o navegador aguentava era bem baixo
No entanto, nesse processo perdi parte dos recursos que o SVG oferecia
Ao visualizar modelos CAD, estou procurando uma forma de refletir apenas alterações parciais sem exportar o arquivo
.stepinteiroLink de exemplo
Foi feito no Inkscape e funcionava direto no navegador