Различное изображение lo go для каждого кадра в сюжете для R - PullRequest
1 голос
/ 19 марта 2020

Допустим, у меня есть такие данные, и я хочу построить их с помощью фреймов. Я также хотел бы добавить к каждому кадру фотографию товара, чтобы было известно, как она выглядит. Я пытаюсь использовать lo go решение, но это stati c по всем кадрам. Здесь в примере смотрите изображение яблока в верхнем левом углу, я хотел бы, чтобы оно было разным для каждого кадра.

Знаете ли вы, как сделать его динамическим c при смене кадра?

enter image description here

data <- data.frame(product = c(rep("product_1", 10), 
                               rep("product_2", 10), 
                               rep("product_3", 10)),
                 size = c(rep(1:10, 3)),
                 scenario_1 = c(runif(30, 0, 1)), 
                 scenario_2 = c(runif(30, 0, 1)), 
                 scenario_3 = c(runif(30, 0, 1)))

cols_to_plot <- c("scenario_1", 
                  "scenario_2", 
                  "scenario_3")


plot <- plotly::plot_ly()

for(k in 1:length(cols_to_plot)) {
  data_k <- data.frame(scenario = data[[cols_to_plot[k]]],
                       size = data$size,
                       product = data$product) %>%
    dplyr::mutate(scenario = tidyr::replace_na(scenario, 0))

  plot <- plotly::add_trace(plot, 
                            y = ~scenario, 
                            x = ~size,
                            frame =~product,
                            data = data_k, 
                            type="scatter",
                            mode="lines",
                            name = cols_to_plot[k]) 
}

plot %>%
  plotly::animation_opts(1000,
                         easing = "elastic",
                         redraw = TRUE) %>%
  plotly::layout(
    title = paste(title), 
    images = list(
      source = "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcQ0gg14eWlJdTfMs27Ec2JqnnE8lI4I40-XJ_1dQoxv498Oq_Nh",
      xref = "paper",
      yref = "paper",
      x= 0,
      y= 1,
      sizex = 0.2,
      sizey = 0.2,
      opacity = 0.8))
...