1 menjawab

Jawaban Terbaik

Mengonversi YEAR menjadi faktor tidak diperlukan. Sebagai gantinya cukup petakan factor(YEAR) di fill. Dengan cara ini Anda dapat menggunakan YEAR dalam waktu transisi dan semuanya baik-baik saja.

Dengan menggunakan kumpulan data gapminder::gapminder sebagai contoh data, kode berikut memplot dan menjiwai kepadatan harapan hidup di seluruh dunia dari waktu ke waktu.

(BTW: Alih-alih menggunakan skala warna kategoris Anda dapat memetakan YEAR langsung pada fill untuk mendapatkan skala warna kontinu. Namun, dalam hal ini Anda harus memetakan YEAR juga di group estetika):

library(ggplot2)
library(dplyr)
library(gganimate)

p <- gapminder::gapminder %>% 
  ggplot(aes(lifeExp, fill = factor(year))) + 
  geom_density(alpha=.2) + 
  xlab("Life Expectancy") + 
  ylab("Kernal density") +
  guides(fill = guide_legend(title = "Year"))

p + 
  transition_time(year) + 
  ease_aes('linear')

Dibuat pada 17-04-2020 oleh paket reprex (v0.3.0)

Sunting:

Sejauh yang saya tahu tanpa melihat dataset Anda, Anda harus mengadaptasi kode Anda seperti itu (dari memeriksa kode Anda, saya kira YEAR adalah karakter. Jadi, Anda harus mengubahnya menjadi bilangan bulat):

data_long <- data_decidious %>% 
  tidyr::gather("YEAR", "NDVI", colsPostNDVI) %>%    
  mutate(YEAR = str_remove(YEAR, 'meanNDVIyear')) %>% 
  mutate(YEAR = str_remove(YEAR, 'meanprefire_NDVI')) %>% 
  # Convert YEAR to integer
  mutate(YEAR = as.integer(YEAR)) 

p <- data_long %>%    
  ggplot(aes(NDVI,fill=factor(YEAR))) + 
  geom_density(alpha=.2) + 
  xlim(0.3, 0.7) + 
  ylim(0,46) +
  xlab("Mean NDVI") + 
  ylab("Kernal density") + 
  guides(fill=guide_legend(title="Comparative"))

p + 
  transition_time(YEAR) + 
  ease_aes('linear')

anim_save("test.gif")
1
stefan 17 April 2020, 21:48