O Highcharter é um embalador do R para a biblioteca Highcharts em JavaScript que inclui muitas funções atalho para produzir gráficos e objetos no R com uma maior facilidade. O Highcharter possui uma dependência da biblioteca do Highcharts que é comercial, embora ofereça também licenças gratuitas para uso não-comercial, portanto deve-se verificar as opções e condições de licença antes de utilizar o software.
O pacote highcharter permite a criação de gráficos tipo Highchart dentro do R.
Há duas principais funções no pacote:
highchart(): Cria um objeto Highchart usando o htmlwidgets. O aplicativo pode ser renderizado em páginas HTML geradas pelo R Markdown, Shiny ou outros.
hchart(): Utiliza o highchart() para construir um gráfico para diferentes classes de objetos do R utilizando um único comando. Especificamente, pode produzir gráficos a partir das classes data frames, numeric, histogram, character, density, factors, ts, mts, xts, stl, ohlc, acf, forecast, mforecast, ets, igraph, dist, dendogram, phylo e survfit.
Os gráficos são construídos no mesmo estilo que o ggplot2 colocando camada por camada, embora use o operador pipe (%>%) ao invés do +.
Outras características interessantes do pacote incluem:
Tematização: é possível configurar os seus gráficos com temas pré-construídos como o do The Economist, Finantial Times, Google e FiveThirtyEight.
Plugins: Movimentos, interação como puxar pontos, diferentes fontes de texto, anotações e outros.
Pacotes necessários:
library(ggplot2)
library(dplyr)
library(devtools)
library(highcharter)
library(geojson)
library(readxl)
h1<-hchart(density(diamonds$price), type = "area", color = "red", name = "Price");h1
h2<-hchart(diamonds$cut, type = "column");h2
h3<-hchart(diamonds$cut, colorByPoint = TRUE, name = "Cut");h3
h3 %>% hc_add_theme(hc_theme_darkunica())
hchart() não suporta objetos ggplot()x <- diamonds$cut
plot(x)
hchart(x)
higchart()highchart() %>%
hc_title(text = "Simple scatter chart") %>%
hc_add_series_scatter(diamonds$carat, diamonds$price) %>%
hc_xAxis(title= list(text= "weight of the diamond ")) %>%
hc_yAxis(title= list(text="price in US dollars "))
## Warning: 'hc_add_series_scatter' is deprecated.
## Use 'hc_add_series' instead.
## See help("Deprecated")
Usamos a função hcmap()para traçar um mapa selecionando um dos mapas da coleção https://code.highcharts.com/mapdata/.
hcmap(map = "countries/br/br-all", showInLegend= FALSE) %>%
hc_title(text = "Brasil")
E como fazer para adicionar dados e obter um mapa Choropleths? Cada mapa baixado da coleção de mapas highcharts possui chaves para adicionar dados. Há duas funções que ajudam a saber qual o código de cada região e como mesclar mapa e dados.
download_map_data : Baixa os dados geojson da coleção do highcharts
get_data_from_map : Obtém as propriedades de cada região no mapa, como as chaves do mapa
(As “chaves” são tipo os código de cada região do mapa - como cada estado ou município - para ser preenchido com os dados)
– Argumentos da função hcmap():
map : string indicando qual mapa está se cartografando;
download_map_data : um valor lógico que indica se é para baixar o mapa e adicioná-lo como uma dependência (o padrão é FALSE);
data : dados opcionais para fazer o mapa ser Choropleths, caso seja usado, os comandos “joinBy” e “value” são necessários;
value : string com o nome da coluna a ser cartografada;
joinBy : quais propriedades serão mescladas no “map”
Exemplo 1:
mapdata <- get_data_from_map(download_map_data("countries/br/br-all"))
glimpse(mapdata)
## Observations: 27
## Variables: 20
## $ `hc-group` <chr> "admin1", "admin1", "admin1", "admin1", "admin1"...
## $ `hc-middle-x` <dbl> 0.43, 0.51, 0.39, 0.73, 0.56, 0.61, 0.46, 0.60, ...
## $ `hc-middle-y` <dbl> 0.34, 0.42, 0.55, 0.33, 0.35, 0.58, 0.47, 0.45, ...
## $ `hc-key` <chr> "br-sp", "br-ma", "br-pa", "br-sc", "br-ba", "br...
## $ `hc-a2` <chr> "SP", "MA", "PA", "SC", "BA", "AP", "MS", "MG", ...
## $ labelrank <chr> "2", "2", "2", "2", "2", "2", "2", "2", "2", "2"...
## $ hasc <chr> "BR.SP", "BR.MA", "BR.PA", "BR.SC", "BR.BA", "BR...
## $ `woe-id` <chr> "2344868", "2344854", "2344857", "2344867", "234...
## $ fips <chr> "BR32", "BR13", "BR16", "BR26", "BR05", "BR03", ...
## $ `postal-code` <chr> "SP", "MA", "PA", "SC", "BA", "AP", "MS", "MG", ...
## $ name <chr> "São Paulo", "Maranhão", "Pará", "Santa Catar...
## $ country <chr> "Brazil", "Brazil", "Brazil", "Brazil", "Brazil"...
## $ `type-en` <chr> "State", "State", "State", "State", "State", "St...
## $ longitude <chr> "-48.5206", "-45.389", "-52.6491", "-51.1586", "...
## $ `woe-name` <chr> "São Paulo", "Maranhão", "Pará", "Santa Catar...
## $ latitude <chr> "-22.2267", "-5.01897", "-4.44313", "-27.0392", ...
## $ `woe-label` <chr> "Sao Paulo, BR, Brazil", "Maranhao, BR, Brazil",...
## $ type <chr> "Estado", "Estado", "Estado", "Estado", "Estado"...
## $ `alt-name` <chr> NA, "São LuÃz de Maranhão", NA, "Santa Cathar...
## $ subregion <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
data_fake <- mapdata %>%
select(code = `hc-a2`) %>%
mutate(value = sample(100:115,27,TRUE))#adiciona novas variáveis e preserva as existentes
glimpse(data_fake)
## Observations: 27
## Variables: 2
## $ code <chr> "SP", "MA", "PA", "SC", "BA", "AP", "MS", "MG", "GO", "R...
## $ value <int> 100, 111, 115, 111, 109, 105, 108, 114, 109, 111, 107, 1...
hcmap("countries/br/br-all", data = data_fake, value = "value",
joinBy = c("hc-a2", "code"), name= "Exemplo",
dataLabels = list(enabled = TRUE, format = '{point.code}'),
tooltip = list(valueDecimals = 2, valuePrefix = "R$")) %>%
hc_title(text = "Brasil") %>%
hc_colorAxis(dataClasses = color_classes(c(seq(100, 115, by = 5)))) %>%
hc_legend(layout = "vertical", align = "right", valueDecimals = 2)
muni <- read_excel("C:/Users/danie/Dropbox/NeaR/Apresentacao_Beatriz/muni.xlsx" )
glimpse(muni)
## Observations: 5,509
## Variables: 3
## $ lat <dbl> -9.82, -10.94, -11.01, -9.83, -10.57, -7.63, -11.02, -8.1...
## $ lon <dbl> -66.88, -69.56, -68.74, -67.95, -67.67, -72.67, -68.74, -...
## $ name <chr> "ACRELANDIA - AC", "ASSIS BRASIL - AC", "BRASILEIA - AC",...
hcmap("countries/br/br-all", showInLegend = FALSE) %>% hc_add_series(data = muni, type = "mappoint", name = "Município", dataLabels = list(enabled = FALSE), tooltip = list(pointFormat = "{point.name}")) %>% hc_mapNavigation(enabled = TRUE)
http://jkunst.com/highcharter/
http://api.highcharts.com/highcharts/chart
http://jkunst.com/highcharter/highmaps.html
https://cran.r-project.org/web/packages/highcharter/vignettes/charting-maps.html
https://rpubs.com/jbkunst/Highcharter-Italy-Map
https://code.highcharts.com/mapdata/
https://www.rdocumentation.org/packages/highcharter/versions/0.5.0/topics/hcmap
https://cran.r-project.org/web/packages/highcharter/highcharter.pdf