tweenr

2017-08-08 18 views
6

ile gganimate kullanırken konu başlıkları tweenr aracılığıyla çalıştırılan bir veri kümesinden çizmek için bir yıl başlığı eklemeye çalışıyorum. gif ben çerçeve başlıkları kullanın (biraz anlamsız) ve ayarlayabilirsiniz oluşturmak için revolutionanalytics.comtweenr

library(tidyverse) 
library(tweenr) 
library(gapminder) 

gapminder_edit <- gapminder %>% 
    arrange(country, year) %>% 
    select(gdpPercap,lifeExp,year,country, continent, pop) %>% 
    rename(x=gdpPercap,y=lifeExp,time=year,id=country) %>% 
    mutate(ease="linear") 

gapminder_tween <- tween_elements(gapminder_edit, 
           "time", "id", "ease", nframes = 150) %>% 
    mutate(year = round(time), country = .group) %>% 
    left_join(gapminder, by=c("country","year","continent")) %>% 
    rename(population = pop.x) 

gapminder_tween %>% arrange(country, .frame) %>% head() 
#   x  y  time continent population .frame  .group year  country lifeExp pop.y gdpPercap 
# 1 779.4453 28.80100 1952.000  Asia 8425333  0 Afghanistan 1952 Afghanistan 28.801 8425333 779.4453 
# 2 781.7457 28.88606 1952.278  Asia 8470644  1 Afghanistan 1952 Afghanistan 28.801 8425333 779.4453 
# 3 784.0462 28.97111 1952.556  Asia 8515955  2 Afghanistan 1953 Afghanistan  NA  NA  NA 
# 4 786.3466 29.05617 1952.833  Asia 8561267  3 Afghanistan 1953 Afghanistan  NA  NA  NA 
# 5 788.6470 29.14122 1953.111  Asia 8606578  4 Afghanistan 1953 Afghanistan  NA  NA  NA 
# 6 790.9475 29.22628 1953.389  Asia 8651889  5 Afghanistan 1953 Afghanistan  NA  NA  NA 

örneğin ardından title_frame = TRUEgganimate işlevinde (varsayılan) ..

library(gganimate) 
library(animation) 
p2 <- ggplot(gapminder_tween, 
      aes(x=x, y=y, frame = .frame)) + 
    geom_point(aes(size=population, color=continent),alpha=0.8) + 
    xlab("GDP per capita") + 
    ylab("Life expectancy at birth") + 
    scale_x_log10() 

magickPath <- shortPathName("C:\\Program Files\\ImageMagick-7.0.6-Q16\\magick.exe") 
gganimate(p2, ani.options = ani.options(convert=magickPath), interval = 0.1) 

enter image description here

Yıl sütununu (haritalama estetiğinde frame = year) kullanmayı denedim, ancak bu sadece her çerçevede birden çok kez görünen 56 kare ve nokta üretiyor.

p2 <- ggplot(gapminder_tween, 
      aes(x=x, y=y, frame = year)) + 
    geom_point(aes(size=population, color=continent),alpha=0.8) + 
    xlab("GDP per capita") + 
    ylab("Life expectancy at birth") + 
    scale_x_log10() 

enter image description here

Can I (ve eğer öyleyse, nasıl) tween'ed veri çerçevesindeki year karşılık gelen değerlere karşılık gelen her kare için başlıklarla ilk gif var?

cevap

3

ttl estetiğini kullanarak çizim başlıklarını özelleştirme olasılığını tanıtan gg_animate işlevini değiştirdim.
Dosyayı here karşıdan yükleyin ve çalışma dizininize mygg_animate.r adıyla kaydedin. Elde edilen hareketli grafik (zaman sekansı GIF dosyası boyutunu azaltmak için kesildi) altında

library(tidyverse) 
library(tweenr) 
library(gapminder) 

gapminder_edit <- gapminder %>% 
    arrange(country, year) %>% 
    select(gdpPercap,lifeExp,year,country, continent, pop) %>% 
    rename(x=gdpPercap,y=lifeExp,time=year,id=country) %>% 
    mutate(ease="linear") 

gapminder_tween <- tween_elements(gapminder_edit, 
           "time", "id", "ease", nframes = 200) %>% 
    mutate(year = round(time), country = .group) %>% 
    left_join(gapminder, by=c("country","year","continent")) %>% 
    rename(population = pop.x) 

library(gganimate) 
library(animation) 
source("mygg_animate.r") 

# Define plot titles using the new aesthetic 
p2 <- ggplot(gapminder_tween, 
      aes(x=x, y=y, frame=.frame, ttl=year)) + 
    geom_point(aes(size=population, color=continent),alpha=0.8) + 
    xlab("GDP per capita") + 
    ylab("Life expectancy at birth") + 
    scale_x_log10() 

magickPath <- shortPathName("C:\\Program Files\\ImageMagick-7.0.6-Q16\\magick.exe") 

mygg_animate(p2, ani.options = ani.options(convert=magickPath), 
    interval = 0.1, title_frame=T) 

:
Daha sonra, aşağıdaki kodu çalıştırın.

enter image description here