highcharter
?Highcharter is a R wrapper for Highcharts javascript library and its modules. Highcharts is very flexible and customizable javascript charting library and it has a great and powerful API.
knitr::opts_chunk$set( warning = FALSE, message = FALSE, collapse = TRUE, comment = "#>", out.width="100%" ) library(dplyr) library(htmltools) library(highcharter) library(tidyverse) library(viridisLite)
color_stops_index <- color_stops(colors = inferno(10, begin = 0.1)) hc_theme_highcharts_small <- hc_theme_hcrt( chart = list(backgroundColor = "transparent"), plotOptions = list( series = list(showInLegend = FALSE, marker = list(radius = 2)), line = list(lineWidth = 1.2) ), xAxis = list( showLastLabel = FALSE, showFirstLabel = FALSE, endOnTick = FALSE, startOnTick = FALSE ), yAxis = list( showLastLabel = FALSE, showFirstLabel = FALSE, endOnTick = FALSE, startOnTick = FALSE ), tooltip = list(valueDecimals = 2) ) options(highcharter.theme = hc_theme_highcharts_small) # example 1 mpg <- ggplot2::mpg %>% mutate(name = str_c(manufacturer, " ", model)) %>% select(x = displ, y = hwy) %>% mutate_all(round, 2) p1 <- hchart(mpg, "point", hcaes(x, y), name = "Cars") %>% hc_colorAxis(stops = color_stops_index, legend = FALSE, visible = FALSE) %>% hc_xAxis(title = list(text = "displ")) %>% hc_xAxis(title = list(text = "hwy")) # example 2 library(forecast) p2 <- hchart( forecast(ets(AirPassengers), level = 90, h = 12 * 2), fillOpacity = 0.1, name = "Air Passengers data" ) %>% hc_xAxis(min = datetime_to_timestamp(as.Date("1955-01-01"))) %>% hc_tooltip(shared = TRUE, valueDecimals = 0) # example 3 data(GNI2014, package = "treemap") GNI2014 <- select(GNI2014, -population, -continent) p3 <- hcmap( "custom/world-robinson-lowres", data = GNI2014, name = "Gross national income per capita", value = "GNI", borderWidth = 0, joinBy = c("iso-a3", "iso3"), nullColor = "#932667" ) %>% hc_colorAxis(stops = color_stops_index, type = "logarithmic") %>% hc_legend(enabled = FALSE) %>% hc_mapNavigation(enabled = FALSE) %>% hc_credits(enabled = FALSE) # example 4 p4 <- highchart() %>% hc_chart(type = "bar") %>% hc_xAxis(type = "category") %>% hc_xAxis(showLastLabel = TRUE, showFirstLabel = TRUE) %>% hc_add_series_list( data_to_boxplot( iris, Sepal.Length, Species, add_outliers = TRUE, color = "red", showInLegend = FALSE, name = "Sepal length" ) ) # example 5 library(igraph) set.seed(12313) N <- 24 net <- sample_pa(N) wc <- cluster_walktrap(net) V(net)$label <- 1:N V(net)$name <- 1:N V(net)$page_rank <- round(page.rank(net)$vector, 2) V(net)$betweenness <- round(betweenness(net), 2) V(net)$degree <- degree(net) V(net)$size <- V(net)$degree + 1 V(net)$comm <- membership(wc) V(net)$color <- colorize(membership(wc), viridisLite::magma(length(wc))) p5 <- hchart(net, layout = layout_with_fr, maxSize = 13) # example 6 p6 <- highchart() %>% hc_chart(type = "area") %>% hc_add_series(density(rnorm(10000000)), name = "Normal(0, 1) Distribution") %>% hc_add_series(density(rgamma(100000000, 5, 0.8)), name = "Gamma(5. 0.8) Distribution") %>% hc_plotOptions(series = list(fillOpacity = 0.5)) %>% hc_xAxis(min = -5, max = 12) # example 7 brks <- seq(-2.5, 2.5, length.out = 30) grid <- expand.grid(brks, brks) m <- as.data.frame(grid) %>% mutate( value = mvtnorm::dmvnorm(grid, mean = c(1, 1), sigma = matrix(c(1, .2, .2, 1), nrow = 2)) + mvtnorm::dmvnorm(grid, mean = c(-1, -1), sigma = matrix(c(1, -.8, -.8, 1), nrow = 2)) + mvtnorm::dmvnorm(grid, mean = c(0, 0), sigma = matrix(c(1.5, 0, 0, 1.5), nrow = 2))) %>% spread(Var2, value) %>% select(-Var1) %>% as.matrix() colnames(m) <- rownames(m) <- NULL ncols <- 10 cols <- c(rep("white", 2), rev(inferno(ncols - 2, begin = 0))) cols <- hex_to_rgba(cols, alpha = 1:ncols/ncols) colssotps <- list_parse2( data.frame( q = seq(0, ncols - 1) / (ncols - 1), c = cols ) ) p7 <- hchart(m) %>% hc_add_theme(hc_theme_null()) %>% hc_legend(enabled = FALSE) %>% hc_colorAxis(stops = colssotps) # example 8 p8 <- hchart(rgamma(5000, shape = 3, scale = 0.8)) %>% hc_xAxis(max = 8) plots <- list( p1, p2, p3, p4, p5, p6, p7, p8 ) plots <- map(plots, hc_size, height = 250) # hw_grid(plots) divplots <- map(plots, tags$div, class = "col-sm-6") divplots <- htmltools::tagList( tags$div( class = "row", # style = "padding-right: 10px", divplots ) ) divplots
The main features of highcharter are:
hchart(x)
you can
chart data.frames
, numeric
or character
vectors, ts
,
xts
, forecast
, survfit
objects.xts
class from the {quantmod} package.geojson
format.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.