Aqui serão usados os dados de exportações e importações brasileiras anuais de 1989 a 2016.
library(dplyr)
library(D3plusR)
dados <- read.csv('dados/exp_imp_brasil.csv')
d3plus(data = dados %>% filter(CO_ANO >= 2005),
type = "bar",
id = "TIPO",
width = "100%",
height = 500,
locale = "pt_BR") %>%
d3plusX(value = "CO_ANO", label = "Ano") %>%
d3plusY(value = "VL_FOB", label = "Valor FOB")
Alguns pontos que devem ser ressaltados do gráfico acima:
D3plus
automaicamente aplica uma formação para os números, incluindo símbolos para Bilhões, milhões e milhares;O primeiro problema pode ser resolvido com os argumentos number_text
, currency
, currency_var
, percent_var
e noformat_number_var
. Basicamente, iremos dizer quais são os textos que devem aparecer para bilhões, milhões e milhares. currency
define o símbolo da moeda que desejamos adiconar antes do número das variáveis que definirmos como variáveis de moeda, currency_var
indica o nome das variáveis de moeda, percent_var
indica o nome das variáveis que são percentuais e noformat_number_var
indica quais variáveis devem apresentar o número na sua forma original.
d3plus(data = dados %>% filter(CO_ANO >= 2005),
type = "bar",
id = "TIPO",
width = "100%",
height = 500,
locale = "pt_BR",
currency = "US$",
number_text = c("Mil", "Milhão", "Milhões", "Bilhão", "Bilhões"),
currency_var = "VL_FOB",
noformat_number_var = "CO_ANO") %>%
d3plusX(value = "CO_ANO", grid = FALSE,
persist = list(position = TRUE)) %>%
d3plusY(value = "VL_FOB", grid = TRUE) %>%
d3plusAxes(ticks = FALSE, background = list(color = "#FFFFFF", stroke = list(width = 0)))
d3plus(data = dados %>% filter(CO_ANO >= 2005),
type = "bar",
id = "TIPO",
width = "100%",
height = 500,
locale = "pt_BR",
currency = "US$",
number_text = c("Mil", "Milhão", "Milhões", "Bilhão", "Bilhões"),
currency_var = "VL_FOB",
noformat_number_var = "CO_ANO") %>%
d3plusX(value = "CO_ANO", grid = FALSE,
persist = list(position = TRUE)) %>%
d3plusY(value = "VL_FOB", grid = TRUE) %>%
d3plusAxes(ticks = FALSE,
background = list(color = "#FFFFFF", stroke = list(width = 0))) %>%
d3plusTime("CO_ANO") %>%
d3plusTooltip(c("CO_ANO", "VL_FOB")) %>%
d3plusColor("TIPO", scale = c("#3C8BE6", "#6E8749")) %>%
d3plusLegend(value = TRUE, data = FALSE)
Para que a ordem das barras guarde correspondência com a ordem que aparece nos dados, é preciso que a variável responsável pelo eixo x seja do tipo
character
.
dados$CO_ANO <- as.character(dados$CO_ANO)
dados$TIPO <- as.character(dados$TIPO)
d3plus(data = dados %>% filter(CO_ANO >= 2005),
type = "bar",
id = "TIPO",
width = "100%",
height = 500,
locale = "pt_BR",
currency = "US$",
number_text = c("Mil", "Milhão", "Milhões", "Bilhão", "Bilhões"),
currency_var = "VL_FOB",
noformat_number_var = "CO_ANO") %>%
d3plusX(value = "CO_ANO", grid = FALSE,
persist = list(position = TRUE)) %>%
d3plusY(value = "VL_FOB", grid = TRUE) %>%
d3plusAxes(ticks = FALSE,
background = list(color = "#FFFFFF", stroke = list(width = 0))) %>%
d3plusTime("CO_ANO") %>%
d3plusTooltip(c("CO_ANO", "VL_FOB")) %>%
d3plusColor("TIPO", scale = c("#6E8749", "#3C8BE6")) %>%
d3plusLegend(value = TRUE, data = FALSE,
order = list(sort = "desc"),
size = 35)
A função d3plus()
tem um argumento que pode ser receber um dicionário (uma lista). Esse dicionário pode ser usado para traduzir nomes de variáveis para textos mais amigáveis, por exemplo.
dicionario <- list(VL_FOB = "Valor FOB",
CO_ANO = "Ano",
IMP = "Importações",
EXP = "Exportações",
isolar = "Selecionar",
ocultar = "Esconder")
d3plus(data = dados %>% filter(CO_ANO >= 2005),
type = "bar",
id = "TIPO",
width = "100%",
height = 500,
locale = "pt_BR",
currency = "US$",
number_text = c("Mil", "Milhão", "Milhões", "Bilhão", "Bilhões"),
currency_var = "VL_FOB",
noformat_number_var = "CO_ANO",
dictionary = dicionario) %>%
d3plusX(value = "CO_ANO", grid = FALSE,
persist = list(position = TRUE)) %>%
d3plusY(value = "VL_FOB", grid = TRUE) %>%
d3plusAxes(ticks = FALSE,
background = list(color = "#FFFFFF", stroke = list(width = 0))) %>%
d3plusTime("CO_ANO") %>%
d3plusTooltip(c("CO_ANO", "VL_FOB")) %>%
d3plusColor("TIPO", scale = c("#6E8749", "#3C8BE6")) %>%
d3plusLegend(value = TRUE, data = FALSE,
order = list(value = "id", sort = "asc"),
size = 35)
O usuário pode especificar mais de um nível no id
. Assim, a visualização criada apresentará os dados no primeiro nível e abrirá o segundo nível a partir de um clique. O nível inicial pode ser escolhido a partir da função d3plusDepth()
(sendo o valor 0
para o primerio nível).
bra_chn_fat <- read.csv2('dados/chn_anual_fat.csv', encoding = "latin1")
bra_chn_fat$CO_ANO <- as.character(bra_chn_fat$CO_ANO)
head(bra_chn_fat)
## TIPO CO_ANO NO_PAIS NO_FAT_AGREG VL_FOB
## 1 EXPORTAÇÕES 2006 China Operações Especiais 34334619
## 2 EXPORTAÇÕES 2006 China Produtos Básicos 6213222707
## 3 EXPORTAÇÕES 2006 China Produtos Manufaturados 879401653
## 4 EXPORTAÇÕES 2006 China Produtos Semimanufaturados 1275409848
## 5 EXPORTAÇÕES 2007 China Operações Especiais 17476098
## 6 EXPORTAÇÕES 2007 China Produtos Básicos 7927295420
## KG_LIQUIDO
## 1 138332
## 2 95568324143
## 3 507473057
## 4 1911374028
## 5 172164
## 6 118401572919
d3plus(bra_chn_fat, type = "bar", id = c("TIPO", "NO_FAT_AGREG"),
width = "100%",
height = 500) %>%
d3plusX(value = "CO_ANO", grid = FALSE,
persist = list(position = TRUE)) %>%
d3plusY(value = "VL_FOB", grid = TRUE, stacked = c(TRUE, FALSE)) %>%
d3plusDepth(0)