library(highcharter) options(highcharter.theme = hc_theme_hcrt(tooltip = list(valueDecimals = 2))) options(download.file.method = "libcurl")
library(idbr) library(purrr) library(dplyr) idb_api_key("35f116582d5a89d11a47c7ffbfc2ba309133f09d") yrs <- seq(1980, 2030, by = 5) df <- map_df(c("male", "female"), function(sex){ mutate(idb1("US", yrs, sex = sex), sex_label = sex) }) names(df) <- tolower(names(df)) df <- df |> mutate(population = pop*ifelse(sex_label == "male", -1, 1)) series <- df |> group_by(sex_label, age) |> do(data = list(sequence = .$population)) |> ungroup() |> group_by(sex_label) |> do(data = .$data) |> mutate(name = sex_label) |> list_parse() maxpop <- max(abs(df$population)) xaxis <- list( categories = sort(unique(df$age)), reversed = FALSE, tickInterval = 5, labels = list(step = 5) ) highchart() |> hc_chart(type = "bar") |> hc_motion( enabled = TRUE, labels = yrs, series = c(0,1), autoplay = TRUE, updateInterval = 10 ) |> hc_add_series_list(series) |> hc_plotOptions( series = list(stacking = "normal"), bar = list(groupPadding = 0, pointPadding = 0, borderWidth = 0) ) |> hc_tooltip( shared = FALSE, formatter = JS("function () { return '<b>' + this.series.name + ', age ' + this.point.category + '</b><br/>' + 'Population: ' + Highcharts.numberFormat(Math.abs(this.point.y), 0);}") ) |> hc_yAxis( labels = list( formatter = JS("function(){ return Math.abs(this.value) / 1000000 + 'M'; }") ), tickInterval = 0.5e6, min = -maxpop, max = maxpop) |> hc_xAxis( xaxis, rlist::list.merge(xaxis, list(opposite = TRUE, linkedTo = 0)) )
# highchart() |> # hc_xAxis(min = 0, max = 10) |> # hc_yAxis(min = 0, max = 10) |> # hc_motion(enabled = TRUE) |> # hc_add_series( # type = "bubble", # data = list( # list( # sequence = list( # list(x = 1, y = 1, z = 10), # list(x = 2, y = 3, z = 5), # list(x = 3, y = 5, z = 8) # ) # ) # ) # ) # # # highchart() |> # hc_xAxis(min = 0, max = 10) |> # hc_yAxis(min = 0, max = 10) |> # hc_add_series( # type = "bubble", # data = list( # list(x = 1, y = 1, z = 10) # ) # ) # # # library(highcharter) # # highchart() |> # hc_chart(type = "scatter") |> # hc_yAxis(max = 6, min = 0) |> # hc_xAxis(max = 6, min = 0) |> # hc_add_series(name = "Australia", # data = list( # list(sequence = list(c(1,1),c(2,2),c(3,3),c(4,4))) # )) |> # hc_add_series(name = "United States", # data = list( # list(sequence = list(c(0,0),c(3,2),c(4,3),c(4,1))) # )) |> # hc_add_series(name = "China", # data = list( # list(sequence = list(c(3,2),c(2,2),c(1,1),c(2,5))) # )) |> # hc_motion(enabled = TRUE, # labels = 2000:2003, # series = c(0,1,2)) # # # list(x = ) # # # # highchart() |> # hc_chart(type = "column") |> # hc_yAxis(max = 6, min = 0) |> # hc_add_series(name = "A", data = c(2,3,4), zIndex = -10) |> # hc_add_series(name = "B", # data = list( # list(sequence = c(1,2,3,4)), # list(sequence = c(3,2,1,3)), # list(sequence = c(2,5,4,3)) # )) |> # hc_add_series(name = "C", # data = list( # list(sequence = c(3,2,1,3)), # list(sequence = c(2,5,4,3)), # list(sequence = c(1,2,3,4)) # )) |> # hc_motion(enabled = TRUE, # labels = 2000:2003, # series = c(1,2))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.