Совместите фоновое изображение и цвет линии в анимации с помощью ggplot2 & gganimate - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь представить некоторые данные моей команды по плаванию с последних соревнований.

Анимированный сюжет здесь: https://imgur.com/aoNs1HC

(1) Чтобы улучшить внешний вид, я вставилфоновая картинка. Однако это фоновое изображение каким-то образом перекрывает оригинальную анимацию. Вы можете увидеть это в анимации ниже. Это фоновое изображение уже имеет непрозрачность 70%, но я по-прежнему не вижу анимированную линию должным образом.

(2) Я также пытался анимировать цвет линии так, чтобы во время анимации я менял ее цвет,Имеется в виду что-то вроде линии красного цвета, когда оно ниже значения 6,5, и зеленого цвета, когда значение выше 6,5. Возможно ли это вообще?

Для (1) я попытался изменить непрозрачность фонового изображения, но безуспешно

Для (2) я пытался добавить это к

geom_line() +
scale_colour_gradient(low="coral", high="steelblue") +

, но ничего не произошло (также нет сообщения об ошибке)

Полный код:

library(ggplot2)
library(gganimate)
library(png)

data <- tibble::tribble(~Heat, ~Performance,
                        8.1, 5.6,
                        8.2, 5.9,
                        8.3, 5.5,
                        8.4, 6.2,
                        8.5, 6.8,
                        8.6, 7.2,
                        8.7, 7.6,
)

url <- "https://i.imgur.com/mREnnlF.png"
download.file(url, destfile = "background_image.png")
background_image <-readPNG("background_image.png")

p <- ggplot(data, aes(Heat, Performance)) + 
  geom_line(color='coral', size = 1) + 
  geom_point(color= "steelblue", size = 3) + 
  background_image(background_image) +
  transition_reveal(Heat) +
  ease_aes('cubic-in-out')

animate(p, fps = 10, end_pause=10, width = 800, height = 400)

(a) Я хочу, чтобы анимация четко отображалась спереди

(b) Изменение цвета линии может быть либо резким, от начального цвета к следующему, либо плавным, анимированным переходом. ,оба в порядке.

(c) Дополнительно - если возможно - я хочу избавиться от описания оси y и вместо этого получить значения точек данных, показанные в анимации, когда линия достигает каждого пункта данных. так что в конце анимации строка показывается вместе с соответствующими значениями в их соответствующих точках данных.

Любая помощь, которая будет высоко оценена, и заранее спасибо всем, кто может справиться с этим! Лучший Том

...