Я пытаюсь использовать пакет highcharter
R «Плагин движения», чтобы создать анимационную диаграмму для тепловой карты. Т.е. Я бы хотел, чтобы тепловая карта менялась со временем, используя ползунок с кнопкой воспроизведения / паузы (см. Ссылки ниже).
Я могу создать простую тепловую карту для определенного года, например:
df <- tibble(year = c(rep(2016, 6), rep(2017, 6)),
xVar = rep(c("a", "a", "b", "b", "c", "c"), 2),
yVar = rep(c("d", "e"), 6),
heatVar = rnorm(12))
df %>%
filter(year == 2016) %>%
hchart(type = "heatmap", hcaes(x = xVar, y = yVar, value = heatVar)) %>%
hc_legend(layout = "vertical", verticalAlign = "top", align = "right")
Однако мне сложно сделать это анимационным графиком (в этом примере он скользит по 2016 и 2017 годам), используя функцию hc_motion(enabled = TRUE, ...)
.
Я прочитал и перешел по этим ссылкам:
https://www.r-bloggers.com/adding-motion-to-choropleths/
http://jkunst.com/highcharter/plugins.html
Но как бы я ни определял свою серию, я не получаю ожидаемого результата. Кто-нибудь может указать мне, как следует определять серии xVar
, yVar
и использовать функцию hc_motion
, чтобы заставить их работать?
ОБНОВИТЬ:
После этого ответа мне удалось это сделать с помощью shiny
, но я все же предпочел бы избегать этого решения:
server <- shinyServer(function(input, output) {
output$heatmap <- renderHighchart({
df <- tibble(year = c(rep(2016, 6), rep(2017, 6)),
xVar = rep(c("a", "a", "b", "b", "c", "c"), 2),
yVar = rep(c("d", "e"), 6),
heatVar = rnorm(12))
# filter data based on selected year
df.select <- dplyr::filter(df, year == input$year)
# chart
hchart(df.select, type = "heatmap", hcaes(x = xVar, y = yVar, value = heatVar))
})
})
ui <- shinyUI(fluidPage(
# Application title
titlePanel("Highcharts Heatmap Motion Chart"),
# Sidebar with a slider input for the selected year
sidebarLayout(
sidebarPanel(
sliderInput("year",
"Year:",
min = 2016,
max = 2017,
step = 1,
value = 2016,
animate = TRUE,
sep = "")
),
# Show a bubble plot for the selected year
mainPanel(
highchartOutput("heatmap")
)
)
))
shinyApp(ui = ui, server = server)