library(highcharter) options(highcharter.theme = hc_theme_hcrt(tooltip = list(valueDecimals = 2)))
In this vignette we'll review some examples to show what highcharts and highcharter can do in terms of customization and design.
This is a bar graph describing my favorite pies including a pie chart describing my favorite bars. - Marshall Eriksen
data(favorite_bars) data(favorite_pies) highchart() |> # Data hc_add_series( favorite_pies, "column", hcaes( x = pie, y = percent ), name = "Pie" ) |> hc_add_series( favorite_bars, "pie", hcaes( name = bar, y = percent ), name = "Bars" ) |> # Options for each type of series hc_plotOptions( series = list( showInLegend = FALSE, pointFormat = "{point.y}%", colorByPoint = TRUE ), pie = list( center = c('30%', '10%'), size = 120, dataLabels = list(enabled = FALSE) ) ) |> # Axis hc_yAxis( title = list(text = "percentage of tastiness"), labels = list(format = "{value}%"), max = 100 ) |> hc_xAxis( categories = favorite_pies$pie ) |> # Titles, subtitle, caption and credits hc_title( text = "How I Met Your Mother: Pie Chart Bar Graph" ) |> hc_subtitle( text = "This is a bar graph describing my favorite pies including a pie chart describing my favorite bars" ) |> hc_caption( text = "The values represented are in percentage of tastiness and awesomeness." ) |> hc_credits( enabled = TRUE, text = "Source: HIMYM", href = "https://www.youtube.com/watch?v=f_J8QU1m0Ng", style = list(fontSize = "12px") ) |> hc_size( height = 600 )
library(dplyr) data(pokemon) lvl_opts <- list( list( level = 1, borderWidth = 0, borderColor = "transparent", dataLabels = list( enabled = TRUE, align = "left", verticalAlign = "top", style = list( fontSize = "12px", textOutline = FALSE, color = "white", fontWeight = "normal" ) ) ), list( level = 2, borderWidth = 0, borderColor = "transparent", colorVariation = list(key = "brightness", to = 0.250), dataLabels = list(enabled = FALSE), style = list( fontSize = "8px", textOutline = FALSE, color = "white", fontWeight = "normal" ) ) ) pkmn_min <- pokemon |> select(type_1, type_2, type_1_color) |> mutate(type_1 = stringr::str_to_title(type_1)) |> mutate(type_2 = ifelse(is.na(type_2), type_1, paste(type_1, "-", type_2))) |> mutate(val = 1) cols <- pkmn_min |> count(type_1, type_2, type_1_color, sort = TRUE) |> pull(type_1_color) |> unique() hchart( data_to_hierarchical(pkmn_min, c(type_1, type_2), val, colors = cols), type = "treemap", # levelIsConstant = FALSE, allowDrillToNode = TRUE, levels = lvl_opts, tooltip = list(valueDecimals = FALSE) ) |> hc_chart( style = list(fontFamily = "Gloria Hallelujah") ) |> hc_title( text = "Gotta Catch 'Em All!", style = list(fontFamily = "Gloria Hallelujah") ) |> hc_size(height = 700)
Example inspired by http://weather-radials.com/.
library(highcharter) data(weather) x <- c("Min", "Mean", "Max") y <- sprintf("{point.%s}°", c("min_temperaturec", "mean_temperaturec", "max_temperaturec")) tltip <- tooltip_table(x, y) hchart( weather, type = "columnrange", hcaes( x = date, low = min_temperaturec, high = max_temperaturec, color = mean_temperaturec ) ) |> hc_chart( polar = TRUE ) |> hc_yAxis( max = 30, min = -10, labels = list(format = "{value} C"), showFirstLabel = FALSE ) |> hc_xAxis( title = list(text = ""), gridLineWidth = 0.5, labels = list(format = "{value: %b}") ) |> hc_tooltip( useHTML = TRUE, pointFormat = tltip, headerFormat = as.character(tags$small("{point.x:%d %B, %Y}")) ) |> hc_title( text = "Climatical characteristics of San Francisco" ) |> hc_size( height = 600 )
Inspired by Nadieh Bremer's block.
data(stars) colors <- c( "#FB1108", "#FD150B", "#FA7806", "#FBE426", "#FCFB8F", "#F3F5E7", "#C7E4EA", "#ABD6E6", "#9AD2E1" ) stars$color <- highcharter::colorize(log(stars$temp), colors) x <- c("Luminosity", "Temperature", "Distance", "Radius") y <- sprintf("{point.%s:.2f}", c("lum", "temp", "distance", "radiussun")) tltip <- tooltip_table(x, y) hchart( stars, "scatter", hcaes( temp, lum, size = radiussun, color = color ), minSize = 2, maxSize = 20 ) |> hc_chart( # backgroundColor = "black" backgroundColor = hex_to_rgba("black", 0.5), divBackgroundImage = "http://www.wired.com/images_blogs/underwire/2013/02/xwing-bg.gif" ) |> hc_xAxis( title = list(text = "Temperature"), type = "logarithmic", gridLineWidth = 0, reversed = TRUE ) |> hc_yAxis( title = list(text = "Luminosity"), type = "logarithmic", gridLineWidth = 0 ) |> hc_title( style = list(color = hex_to_rgba("white", 0.5)), text = "Our nearest Stars" ) |> hc_subtitle( style = list(color = hex_to_rgba("white", 0.5)), text = "In a Hertzsprung-Russell diagram" ) |> hc_tooltip( useHTML = TRUE, headerFormat = "", pointFormat = tltip ) |> hc_size( height = 700 )
From WSJ graphic: Battling Infectious Diseases in the 20th Century:
data(vaccines) fntltp <- JS("function(){ return this.point.x + ' ' + this.series.yAxis.categories[this.point.y] + ': ' + Highcharts.numberFormat(this.point.value, 2); }") plotline <- list( color = "#fde725", value = 1963, width = 2, zIndex = 5, label = list( text = "Vaccine Intoduced", verticalAlign = "top", style = list(color = "#606060"), textAlign = "left", rotation = 0, y = -5 ) ) hchart( vaccines, "heatmap", hcaes( x = year, y = state, value = count ) ) |> hc_colorAxis( stops = color_stops(10, viridisLite::inferno(10, direction = -1)), type = "logarithmic" ) |> hc_yAxis( title = list(text = ""), reversed = TRUE, offset = -20, tickLength = 0, gridLineWidth = 0, minorGridLineWidth = 0, labels = list(style = list(fontSize = "9px")) ) |> hc_tooltip( formatter = fntltp ) |> hc_xAxis( plotLines = list(plotline)) |> hc_title( text = "Infectious Diseases and Vaccines" ) |> hc_subtitle( text = "Number of cases per 100,000 people" ) |> hc_legend( layout = "horizontal", verticalAlign = "top", align = "left", valueDecimals = 0 ) |> hc_size(height = 900)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.