Melhores ferramentas para gráficos

Compilei uma série de recursos para visualização de dados utilizados pelo Volt

Fale comigo pelo Twitter — @sergiospagnuolo


Desde que criei o Volt Data Lab, em 2014, venho fazendo gráficos com notável frequência, tanto para projetos desenvolvidos com parceiros quanto por interesse próprio e diversão. E é comum que pessoas me perguntem quais ferramentas eu utilizo para produção dessas visualizações.

Pois bem, decidi então atualizar e refinar uma lista que fiz ainda em 2015 elencando mais de 20 ferramentas para visualização de dados. À época, eu usava qualquer coisa que caísse em meu colo, a fim de provar e refinar novos recursos e, eventualmente, escolher poucas dentre as muitas opções.

Veja abaixo a lista das ferramentas que utilizamos para produzir nossas visualizações de dados. Assim, quando me perguntarem o que eu uso, mandarei este link.

Auto-propaganda: vale lembrar que o Volt presta serviços de consultoria e implementação de ferramenta de visualização de dados para agências, ONGs e redações, facilitando todo esse processo. Entre em contato conosco aqui.

Playfair

Gráfico feito pelo Volt com Playfair (estático)

O Volt usa uma versão customizada do Playfair, que nós mesmos adaptamos do excelente projeto de Austin Clemens. É uma ferramenta excelente, maleável, relacionada a objetos. Não é à toa que é baseada no popular pacote de R ggplot2.

Com um pouco de conhecimento da ferramenta, o céu é o limite para o que se pode fazer com ela, além de ser fácil de usar com sua boa interface gráfica.

Pontos fortes: 
- Maleável, versátil, rápida;
- Permite customização total de fontes, cores e até logo; 
- Exporta imagem com qualidade; 
- Caso queira salvar os gráficos produzidos, é possível hospedá-la de graça no GithubPages, sem necessidade de banco de dados; 
- Mas é possível atrelar a db para usar recursos como templates customizados variáveis e salvar e resgatar gráficos produzidos; 
- É possível também exportar SVG, o que ajuda na customização; 
- Excelente ferramenta de anotação;
- Open source e gratuita.

Pontos fracos: 
- Serve principalmente para produção de gráficos estáticos (embora o Volt esteja trabalhando para tentar fazer uma versão interativa dela.) 
- Outro problema, bem significativo, é que ainda não é possível utilizar dois eixos (y1 e y2). Logo, se você tiver duas escalas diferentes no mesmo gráfico, precisa fazer alguma mágica com os recursos que o Playfair oferece ou então utilizar outra ferramenta. 
- Como toda ferramenta baseada em SVG, o Playfair não suporta a plotagem de milhares de pontos de dados.


ggplot2

Gráfico feito pelo Volt com ggplot2 (estático)

Sempre que o Volt precisa fazer algo mais complexo, utilizando recursos como facetas, múltiplas escalas, plot de milhares de pontos na mesma canvas, análises mais complexas, eu recorro ao ggplot2, um pacote de gráficos para R que consegue lidar praticamente com tudo o que você jogar pra cima dele. O céu é o limite. Neste gráfico que fizemos pra Piauí, conseguimos plotar dezenas de milhares de pontos. Se combinado com ggthemes e scales, fica ainda melhor.

Pontos fortes:
- Plotagem de muitos milhares de pontos;
- Customização total dos gráficos;
- Consegue lidar com muitas formas de gráficos;
- Faz parte da grande ferramenta e linguagem que é o R;
- Open source e gratuita.

Pontos fracos:
- Precisa saber R e aprender os comandos do ggplot2;
- Produz apenas gráficos estáticos (embora seja possível exportar como SVG e aplicar interação, mas boa sorte aplicando interação pra 48 mil pontos de dados);
- Pode ser um tanto trabalhoso a plena customização inicial de seu gráfico, especialmente quando usando ggthemes;
- Fazer anotações no gráfico é um tanto chato.


D3 (puro)

Gráfico feito pelo Volt em D3 puro (interativo)

Todo mundo que sabe o mínimo de visualização de dados já ouviu falar de D3, uma library criada e mantida por Mike Bostock. Nela, é possível usar uma lógica simplificada de javascript para manipular SVG e criar coisas inimagináveis (veja só o absurdo portfólio de Nadieh Bremer) e interativas. É uma das ferramentas favoritas entre designers de informação, jornalistas que escrevem código e veículos de mídia que trabalham pesado com visualização de dados.

Pontos fortes:
- É possível fazer coisas impensáveis com ela, permite uma manipulação gráfica em outro nível;
- Permite gráficos interativos em todos os sentidos;
- Excelente documentação feita por Bostock;
- Riquíssimo acervo de exemplos, inclusive na plataforma bl.ocks;
- Open source e gratuita, permite customização total dos gráficos.

Pontos fracos:
- Não vou negar, é muito difícil. A curva de aprendizado é lenta, especialmente no começo, e mais especialmente ainda para fazer bind de dados. Como disse um amigo meu, poucos são os jornalistas que realmente manjam de D3 (eu certamente não estou entre eles, mas eu sei me virar);
- Tornar gráficos responsivos para dispositivos móveis pode exigir um código totalmente novo ou muito elaborado, caso não queira simplesmente redimensionar o SVG.


D3plus

Gráfico feito pelo Volt em D3plus (interativo)

De tempos em tempos todos gostamos de ver gráficos interativos. Mas às vezes o tempo é curto e mandar ver em D3 puro pode ser trabalhoso e consumir muito tempo, especialmente na responsividade para dispositivos móveis. D3plus é uma forma simplificada de usar D3 — embora um pouco, só um pouco, limitada do ponto de vista de customização e funcionalidades. Mas é possível alimentar os gráficos a partir de APIs em Json (como eu faço na Conta dos Passaralhos), além de ser mais fácil de mexer.

Pontos fortes:
- Simplifica o uso de D3;
- Bastante recursos interativos;
- Responsividade automática para mobile;
- Permite alimentação dinâmica usando Json;
- Open source e gratuita.

Pontos fracos:
- Funcionalidades são um pouco engessadas e confusas, e às vezes não funcionam direito;
- Há limitações em termos de customizações — embora seja possível fazer muita coisa, alguns recursos às vezes não funcionam;
- Bind de dados funciona somente com Json, na versão inicial é possível usar .csv, por exemplo, só se mexer no código-fonte.


Sheetsee.js

Mapa feito pelo Volt usando Sheetsee.js (interativo)

Eu adoro fazer mapas interativos em Leaflet.js ou em Carto, ou usar Jekyll para tabelas interativas. Mas, às vezes, é preciso simplificar processos e produtos a fim de atender melhor a nossos parceiros e clientes. Assim, a programadora Jessica Lord nos presentou com o Sheetsee.js, uma library que conecta o Google Sheets a mapas e tabelas, praticamente criando uma API. É uma mão na roda em muitos sentidos. Os mapas são baseados em Leaflet e Mapbox, e as tabelas, puramente em HTML e CSS. Um trabalho que eu fiz para o Observatório de Favelas/DataLabe mostra bem isso.

Pontos Fortes: 
- Possibilidade de usar Google Sheets diretamente para alimentação dados;
- Com um pouco de conhecimento em javascript é possível fazer miséria em projetos de pequena e média escala;
- Funcionalidade para tabelas e mapas de forma interativa;
- Mapas baseados na excelente library Leaflet.js;
- Total configuração de estilos e basemaps;
- Open source e gratuita.

Pontos Fracos:
- Essa ferramenta costumava ter suporte para gráficos básicos em D3, o que ajudava muito. No entanto, esse suporte infelizmente foi retirado, possivelmente por conta de mudanças na API do D3;
- Precisa entender um pouco de estrutura de javascript, mas não é nenhum bicho de sete cabeças;
- Não é bom para projetos muito grandes, com muitos pontos de dados.


Plot2

Gráfico feito pelo Volt em Plot2 (estático)

Plot2 é uma tremenda ferramenta de gráficos. Em muitas medidas, se assemelha bastante a ggplot2. Mas nem tudo. Versátil e completa, é possível trabalhar muito, muito bem com gráficos que envolvem série temporal de dados. No entanto, como não é orientada a objetos, algumas das "mágicas" possíveis em Playfair e ggplot2 não são executáveis nessa ferramenta exclusiva para Mac, como utilização de dados não numéricos nos eixos X e Y. É uma ferramenta mais científica do que puramente de visualização. Não deixa de ser uma boa ferramenta, mas limita bastante seu uso dependendo de como você quer trabalhar certo conjunto de dados.

Pontos Fontes: 
- Customização total de elementos estéticos do gráficos;
- Aplicativo para desktop (apenas Mac), não online;
- Boas funcionalidades para gráficos científicos;
- Gratuito (mas há uma versão paga pra apoiar o desenvolvedor).

Pontos Fracos:
- Pouca maleabilidade para dados não numéricos;
- Versão apenas para Mac;
- Interface é bastante confusa, parece ser desenhada bastante para quem já tem conhecimento gráfico-estatístico avançado;
- Permite apenas input de dados estáticos;
- Exporta apenas imagens;
- Formatos de dados próprios, é preciso limpar seus dados de forma granular pra utilizar bem essa ferramenta;
- Preferência de dados amplos (wide data), na contramão de dados longos (long data) preferidos em ggplot2, Playfair e D3;
- Posso estar enganado, mas não consegui fazer um template ainda no Plot2 (acho que é exclusivo de quem paga, e eu uso a versão gratuita), então a cada gráfico novo que faço lá, preciso começar do zero a inserir cores, fontes e outros elementos estéticos.


Carto

GIF feito a partir de Carto (interativo)

Eu gosto de fazer mapas em Carto porque é fácil, rápido e dispõe de uma série de recursos mesmo na versão gratuita. Talvez não seja a melhor para grandes projetos interativos, mas para o dia a dia, é uma beleza, inclusive para fazer GIFs de séries temporais.

Pontos Fortes:
- Simplicidade e rapidez;
- Versão gratuita possui vários recursos;
- Exporta mapa estático, anima série histórica e embeda mapa responsivo com iframe;
- Gratuito, mas com diversas limitações na versão livre.

Pontos Fracos:
- Para quem quer toda funcionalidade, preços podem ser um tanto salgados;
- Limite baixo de requests na versão gratuita;
- Não funciona tão bem, especialmente em termos de customização e interação, na versão gratuita, quanto Leaftlet.js puro para grandes projetos.


Tem alguma dica, crítica ou comentário?
Fale comigo pelo Twitter — @sergiospagnuolo

Atualizada em 11/07/2017 para refletir uma correção, esclarecendo na parte do Playfair que quem quiser salvar gráficos pode hospedar a ferramenta em seu servidor.