Antes de começar a procurar uma biblioteca de gráficos, o senhor precisa saber que criar uma boa visualização de dados (dataviz) é um grande investimento de tempo se estiver planejando criar um aplicativo sério. Ter respostas claras para perguntas como o que exatamente sua visualização de dados pretende alcançar, em quais dispositivos ela será usada, quanto tempo o senhor tem para criar o aplicativo etc. o ajudará a fazer o melhor uso das diretrizes mencionadas abaixo.


Compatibilidade entre navegadores


O fato de o senhor precisar de uma biblioteca de gráficos compatível com todos os navegadores ou apenas com os navegadores modernos depende do seu público-alvo. Se o senhor estiver desenvolvendo para o governo ou para clientes corporativos, há uma grande chance de que eles ainda estejam usando versões mais antigas do IE. Portanto, as bibliotecas de gráficos que só funcionam com navegadores modernos podem não ser uma boa opção.


É muito difícil lidar com problemas de compatibilidade entre navegadores, e acredito que a biblioteca que o senhor escolher deve fazer isso por você.


Compatibilidade entre dispositivos


O seu aplicativo será usado principalmente em desktops ou também tem como alvo os usuários de dispositivos móveis? Se for apenas para visualização em tela grande, a maioria das bibliotecas de gráficos funcionará para o componente dataviz, mas se quiser garantir uma experiência consistente também em dispositivos portáteis, a biblioteca de gráficos escolhida deve ser responsiva. Isso está se tornando cada vez mais importante devido às mudanças nos hábitos dos usuários nos últimos tempos.


Formato dos dados de entrada


Embora o JSON (JavaScript Object Notation) esteja gradualmente se tornando o formato padrão, especialmente quando se trata de bibliotecas de gráficos, ainda há muitos casos em que o senhor terá de lidar com XML. Se o senhor precisar de dados XML para sua visualização de dados, será bom saber se a biblioteca de gráficos é compatível com eles.


Personalização


Isso, pelo menos para mim, é o maior fator de decisão. A biblioteca de gráficos é flexível o suficiente para que eu possa fazer o que quiser, ou ela só terá uma boa aparência nos padrões e o senhor estará por sua conta se tentar personalizá-la?


Há centenas de coisas com as quais gosto de brincar, como adicionar formas personalizadas, configurar legendas, anexar eventos (clicar, passar o mouse, pressionar teclas), aproveitar o detalhamento de dados e aplicar temas etc. Se quiser criar um design bonito, será bom ter uma biblioteca que seja facilmente personalizável para que você possa moldá-la de acordo com o design do seu aplicativo.


Variedade de gráficos disponíveis


Esta é uma tarefa fácil. Qualquer visualização de dados que o senhor queira criar deve fazer parte da biblioteca. Mas isso não é tão fácil, pois várias bibliotecas de gráficos têm pacotes coletivos nos quais gráficos semelhantes são agrupados, como mapas, widgets e gráficos de ações. Portanto, dependendo do caso de uso, talvez o senhor queira optar apenas por um tipo específico de gráfico ou obter um pacote completo.


Se quiser comparar diferentes bibliotecas de gráficos com base na variedade de gráficos disponíveis, o senhor encontrará este recurso muito útil.


Curva de aprendizado


Algumas bibliotecas de visualização de dados, como a D3.js, têm uma curva de aprendizado acentuada. Sem dúvida, o D3.js é muito avançado, mas se o senhor estiver com um prazo apertado ou usando uma biblioteca de gráficos pela primeira vez, eu não recomendaria.


Por outro lado, se o senhor está começando a trabalhar com visualização de dados e tem muito tempo disponível para fazer experiências, deve experimentar bibliotecas que sejam bonitas, mas que exijam algum investimento de tempo.


Compatibilidade com outras partes do código


Imagine que o senhor seja um ninja de PHP ou ASP.NET e não esteja muito familiarizado com JavaScript. Não seria ótimo se o senhor pudesse criar gráficos sem escrever nenhum código JavaScript? Algumas bibliotecas têm plugins e wrappers gratuitos que geram o código JavaScript e HTML necessário para o senhor, que é então usado para renderizar gráficos em uma página do navegador. Exemplos aqui e aqui.


Desempenho


O desempenho depende de muitos fatores, como o tamanho da biblioteca, o uso da memória durante a renderização, a coleta de lixo e o número de ciclos de repintura do navegador. Eu valorizo muito o desempenho, mas otimizar apenas para o desempenho nem sempre é a melhor ideia. Isso pode parecer contraditório, então vou explicar meu ponto de vista com um exemplo.


Vamos supor que o senhor esteja criando um painel que será usado na intranet local. O senhor acha que usar a biblioteca com o menor tamanho de pacote faz sentido nesse caso? Nesse caso, escolherei a biblioteca que for melhor com base em outros fatores discutidos aqui. Economizar no tamanho da biblioteca será a menor das minhas preocupações.


Exportação


Esse ponto não se aplica a todos os casos de uso, mas apenas a casos como relatórios e painéis. Se o senhor estiver criando um painel para o público empresarial, seus usuários talvez queiram exportar gráficos para PDF ou imagens. É melhor que a biblioteca de gráficos que o senhor escolher ofereça suporte imediato ao recurso de exportação. Os formatos de exportação mais comuns que o senhor deve procurar são JPEG, PNG, PDF e SVG.


Design e interatividade


O design é mais do que apenas a aparência de um gráfico. Ele não deve apenas ter uma boa aparência (temas, esquema de cores), mas deve ter uma interatividade significativa. Por exemplo, se o senhor estiver criando um gráfico de pizza, clicar em uma pizza deve puxá-la para fora (ou adicionar borda à circunferência) por padrão. O código personalizado não deve ser necessário para isso. Clicar em um ícone de legenda em um gráfico de linhas de várias séries deve alternar a visibilidade do gráfico de dados relacionado.


Preços e termos de licenciamento


A maioria das bibliotecas agora fornece seu código-fonte quando o usuário compra uma licença, mas isso não significa que o senhor está livre para fazer o que quiser. É importante saber quais são todas as permissões necessárias para o seu projeto e comprar a licença relevante. Os termos e preços variam de acordo com fatores como número de usuários, tipo de aplicativo (SaaS, intranet, Web) e número de servidores.


Suporte


Se o senhor estiver criando um aplicativo, talvez a visualização de dados não seja seu ponto forte. Portanto, quando o senhor se depara com um problema, talvez precise de algum suporte externo para resolvê-lo. O suporte pode vir de várias formas, como sites pessoais, de fóruns ou de comunidades, como o StackOverflow. Se o senhor estiver com a agenda apertada, não vai querer esperar por uma resposta no StackOverflow. O suporte pessoal ou um fórum dedicado seria muito útil nesse caso.


No caso das bibliotecas populares, a maioria das respostas às perguntas gerais está facilmente disponível. Mas já me deparei com becos sem saída algumas vezes ao testar casos extremos. Se o senhor acha que pode precisar de suporte dedicado, eu recomendaria comprar um componente de gráficos em vez de usar uma solução de código aberto (desde que atenda a todos os outros requisitos).


Código aberto


Adoro o código aberto, mas acredito que ele não é a solução certa para tudo. Especialmente quando se trata de soluções de gráficos, há toneladas de pequenas bibliotecas de código aberto disponíveis no GitHub. Mas tenha cuidado antes de tentar implementar uma delas em seu projeto.


Certa vez, um amigo meu usou uma pequena biblioteca de código aberto em seu projeto comercial porque gostou de alguns de seus recursos. Depois de um ano, ele ficou preso quando tentou implementar alguns recursos avançados. Quando tentou entrar em contato com o criador, ficou sabendo que o projeto havia sido abandonado há muito tempo. Tenho certeza de que isso não acontecerá com grandes projetos de código aberto como D3.js, Google Charts ou morris.js, mas é melhor considerar a possibilidade em vez de se arrepender depois.


Aqui está um artigo muito bom que responde quando um biblioteca comercial faz sentido em relação a uma biblioteca de código aberto.


Esses são todos os fatores que considero importantes conhecer para fazer uma escolha informada. Se o senhor acha que deixei passar alguns fatores, mencione-os nos comentários.

Vikas Lalwani

Sobre Vikas Lalwani

Vikas é um programador iniciante que gosta de se divertir com tecnologias de front-end. O senhor pode ver alguns de seus pequenos experimentos em seu site. Ele trabalha na FusionCharts e está sempre disponível para um bate-papo rápido.