3 Primeiro Exemplo

3.1 Criando uma simples visualização de barras

Neste primeiro exemplo, iremos replicar o exemplo disponibilizado pelo desenvolvedores do pacote neste link.

O código original é o seguinte:

<!doctype html>
<meta charset="utf-8">

<script src="//d3plus.org/js/d3.js"></script>
<script src="//d3plus.org/js/d3plus.js"></script>

<div id="viz"></div>

<script>
  var data = [
    {"year": 1991, "name":"alpha", "value": 15},
    {"year": 1991, "name":"beta", "value": 10},
    {"year": 1991, "name":"gamma", "value": 5},
    {"year": 1991, "name":"delta", "value": 50},
    {"year": 1992, "name":"alpha", "value": 20},
    {"year": 1992, "name":"beta", "value": 10},
    {"year": 1992, "name":"gamma", "value": 10},
    {"year": 1992, "name":"delta", "value": 43},
    {"year": 1993, "name":"alpha", "value": 30},
    {"year": 1993, "name":"beta", "value": 40},
    {"year": 1993, "name":"gamma", "value": 20},
    {"year": 1993, "name":"delta", "value": 17},
    {"year": 1994, "name":"alpha", "value": 60},
    {"year": 1994, "name":"beta", "value": 60},
    {"year": 1994, "name":"gamma", "value": 25},
    {"year": 1994, "name":"delta", "value": 32}
  ]
  var visualization = d3plus.viz()
    .container("#viz")
    .data(data)
    .type("bar")
    .id("name")
    .x("year")
    .y("value")
    .draw()
</script>

O nosso interesse é na parte que está dentro da tag <script>. Perceba que foi criar um objeto chamado data que é um array de objetos. Esses objetos têm as seguintes chaves (keys) year,name e value com seus respectivos valores (values). Assim, vamos criar a estrutura de dados no R que após ser convertida irar gerar um objeto igual ao criado acima:

data <- data.frame(year = c(1991, 1991, 1991, 1991, 1992, 1992, 1992, 1992, 1993,
                            1993, 1993, 1993, 1994, 1994, 1994, 1994),
                   name = c("alpha", "beta", "gamma", "delta", "alpha", "beta",
                            "gamma", "delta", "alpha", "beta", "gamma", "delta",
                            "alpha", "beta", "gamma", "delta"),
                   value = c(15, 10, 5, 50, 20, 10, 10, 43, 30, 40, 20, 17,
                            60, 60, 25, 32))

Não precisamos nos preocupar com o jsonlite agora, pois o pacote D3plusR é faz essa conversão.

A segunda parte do código (visualization) cria a visualização. Cada método é representado por um método (.metodo()). Ou seja, .data() refere-se ao método de dados, .type() controla o tipo de gráfico, .size() controla opções refente a codificação visual de tamanho etc. De maneira geral, o pacote D3plusR fornece uma função para cada método desse. Por exemplo, o método .size() é utilizado a partir da função d3plusSize().

Vale ressaltar que alguns métodos mais comuns e que não usam muitas opções já estão disponíveis na função d3plus(), que é a função utilizada para inicializar a visualização. Por exemplo, ao invés de usar d3plusData(), pode-se passar diretamente o data.frame no argumento data. O mesmo vale para type e id. A função também fornece uma funcionalidades extras que serão descritas mais a frente, como a possibilidade de uso de um dicionário e definição de características de moeda.

library(D3plusR)
library(jsonlite)
library(dplyr)

d3plus(data = data,
             type = "bar", 
             id = "name",
             height = 500,
             width = "100%") %>% 
  d3plusX("year") %>% 
  d3plusY("value")

O id é um pouco específico do pacote. Ele serve de identificador de cada ponto. No caso da visualização acima, cada name é um identificador daquele ponto. No exemplo acima, name poderia ser o nome de um país. A variável value é usada para definir o valor de y de cada barra e year informa o valor de x. O entendimento do id fica mais claro com os demais exemplos.

Veja também a lógica de encadeamento com o %>% que replica uma estrutura similar ao código original.

Para finalizar esse capítulo, vamos apenas incluir um título:

d3plus(data = data,
             type = "bar", 
             id = "name",
             height = 500,
             width = "100%") %>% 
  d3plusX("year") %>% 
  d3plusY("value") %>% 
  d3plusTitle(value = "Minha primeira visualização com D3plusR",
              sub = "Um simples gráfico de barras",
              font = list(size = 22, weight = 900))

O importante aqui é perceber que:

  1. Um único valor sem o nome do argumento, como em d3plusY("value"), é o equivalente a d3plusY(value = "value")
d3plusY(value = "value")
  1. Se forem passados vários argumentos é preciso nomeá-los:
d3plusTitle(value = "Título", sub = "Subtítulo")
  1. Se um argumento puder receber opções, essas opções, em regra, serão passadas por meio de uma lista nomeada:
d3plusTitle(value = "Minha primeira visualização com D3plusR",
              sub = "Um simples gráfico de barras",
              font = list(size = 22, weight = 900))