7 Atributos

Cada ponto de uma visualização pode ter um conjunto de informações auxiliares que são denominadas de atributos. O mais comum é definir cores e ícones. Por exemplo, em visualização de dados exportações por fator agregado (básicos, semimanufaturados, manufaturados e operações especiais) podemos querer definir uma cor para cada fator agregado. Essa informação deve ser construída em um data.frame

7.1 Exemplo de atributos de cores

O data.frame fat_attr tem uma linha para cada fator agregado, sendo um coluna com o nome do fator agregado e outra com a espeficicação da cor. Para usar os dados de atributos, devemos passar o objeto na função d3plusAttrs() e informar na função d3plusColor() o nome da coluna que possui as informações de cor.

library(dplyr)
library(D3plusR)

dados_chn <- read.csv2('dados/chn.csv', stringsAsFactors = FALSE, encoding = 'latin1')

dados_chn_exp <- dados_chn %>% 
  filter(TIPO == "EXPORTAÇÕES", PERIODO == "Total")

fat_attr <- data.frame(NO_FAT_AGREG = c("Operações Especiais", "Produtos Básicos",
                                        "Produtos Manufaturados", "Produtos Semimanufaturados"),
                       cor = c("#C22525", "#BFBF2A", "#2D3C63", "#A6A6A6"),
                       stringsAsFactors = FALSE)

d3plus(dados_chn_exp, type = "tree_map", id = c("NO_FAT_AGREG", "NO_PPE_PPI"),
       width = "100%", height = 500) %>% 
  d3plusSize("VL_FOB") %>% 
  d3plusLabels(value = TRUE, valign = "top") %>% 
  d3plusAttrs(fat_attr) %>% 
  d3plusColor("cor")

Agora, se o interesse da gente fosse de já apresentar os dados a nível de produto, mas separados por fator agregado (nível hierárquico superior)? Assim, criaremos um data.frame com os atributos por PPE (classificação de produtos exportados). Note que foi mantida uma coluna com o nome do nível hierárquico superior (NO_FAT_AGREG).

# Evita problemas de encoding nos joins do dplyr
dados_chn_exp2 <- merge(dados_chn_exp, fat_attr, by = "NO_FAT_AGREG")

ppe_attr <- dados_chn_exp2 %>% 
  select(NO_FAT_AGREG, NO_PPE_PPI, cor) %>% 
  filter(!duplicated(.))

d3plus(dados_chn_exp, type = "tree_map", id = c("NO_FAT_AGREG", "NO_PPE_PPI"),
       width = "100%", height = 500) %>% 
  d3plusSize("VL_FOB") %>% 
  d3plusLabels(value = TRUE, valign = "top") %>% 
  d3plusAttrs(ppe_attr) %>% 
  d3plusColor("cor") %>% 
  d3plusDepth(1)

7.1.1 Definindo atributos para os dois níveis

Se quiséssemos deixar o conjunto de atributos dos dois níveis em um único objeto, poderíamos criar uma lista em que cada elemento dessa lista recebe um data.frame de atributos e é nomeado com o respectivo nome do id.

fat_ppe_attr <- list(NO_FAT_AGREG = fat_attr,
                     NO_PPE_PPI = ppe_attr)

d3plus(dados_chn_exp, type = "tree_map", id = c("NO_FAT_AGREG", "NO_PPE_PPI"),
       width = "100%", height = 500) %>% 
  d3plusSize("VL_FOB") %>% 
  d3plusLabels(value = TRUE, valign = "top") %>% 
  d3plusAttrs(fat_ppe_attr) %>% 
  d3plusColor("cor") %>% 
  d3plusDepth(1)

7.2 Ícones

Para incluir ícones nas visualizações, é suficiente criar uma nova coluna com os endereços das imagens que serão usadas como ícones. Como nos mapas, é necessário que o html gerado possa acessar esses arquivos. Ou seja, não é possível visualizar os ícones em visualizações criadas diretamente para o Viewer do RStudio.

fat_ppe_attr$NO_FAT_AGREG$icon <- c('icons/opesp.png', 'icons/basicos.png',
                                    'icons/manuf.png', 'icons/semimanuf.png')

fat_ppe_attr$NO_PPE_PPI <- merge(fat_ppe_attr$NO_PPE_PPI,
                                     fat_ppe_attr$NO_FAT_AGREG,
                                     by = "NO_FAT_AGREG")

d3plus(dados_chn_exp, type = "tree_map", id = c("NO_FAT_AGREG", "NO_PPE_PPI"),
       width = "100%", height = 500) %>% 
  d3plusSize("VL_FOB") %>% 
  d3plusLabels(value = TRUE, valign = "top") %>% 
  d3plusAttrs(fat_ppe_attr) %>% 
  d3plusColor("cor") %>% 
  d3plusIcon(value = "icon", style = "knockout")