やはり、データの前処理が重要ですが、「R」のコードは繰り返し作業に適していて、便利だと思います。
コード化しておけば、処理を再現することが簡単・確実で、データ更新に即時に対応できます。また、コードは応用できるので、他のデータでのファイル作成に役立てることができます。
「R」コードで作成した動画ファイルに、編集ソフトでタイトルを入力したり、BGMを付けたりして完成です。
<データの前処理>
df_cent <- read.csv("central.csv")
df_cent <- as.data.frame(df_cent)
view(df_cent)
df_paci <- read.csv("pacificl.csv")
df_paci <- as.data.frame(df_paci)
df_paci <- df_paci[2:8]
view(df_paci)
df_cepa <- cbind(df_cent,df_paci)
view(df_cepa)
df_cepa <- df_cepa %>% mutate(year = paste0(year_n,"年"))
df_cepatidy <- df_cepa %>% gather(key=team,numbers,2:14)
view(df_cepatidy)
df_ceparank <- df_cepatidy %>% group_by(year_n) %>% mutate(rank = rank(- numbers ), Val_lbl = paste0(" ",numbers)) %>% group_by(year_n) %>% filter(rank <= 12)
view(df_ceparank)
#折れ線グラフなどでの並び順を下記のコードで設定しています。棒グラフの色指定でも#この並び順を利用しています。
df_ceparank$team <- factor(df_ceparank$team,levels=c("読売ジャイアンツ","東京ヤクルトスワローズ","横浜DeNAベイスターズ","中日ドラゴンズ","阪神タイガース","広島東洋カープ","北海道日本ハムファイターズ","埼玉西武ライオンズ","千葉ロッテマリーンズ","大阪近鉄バファローズ","オリックスバファローズ","福岡ソフトバンクホークス","東北楽天ゴールデンイーグルス"))
<バーチャート・レースのグラフ作成>
grarank <-ggplot(df_ceparank,aes(x = rank, group = team))+ geom_tile(aes(y=numbers/2,height = numbers,fill = team,width = 0.8)) + scale_fill_manual(values=c("#F97709","#ED1A3D","#094a8c","#002569","#FFE201","#FF0000","#02518c","#102961","#221815","red","#b08f32","#f9ca00","#85010f"))+
labs(y=" ",title="プロ野球 セ・パ両リーグの球団別年間入場者数(1952年~2019年)",caption="日本野球機構のデータから") +
geom_text(x = -10, y = 2750000,aes(label = year), size = 32, col = "navy") + geom_text(aes(y = 0, label = paste(team, " ")), vjust = 0.5, hjust =1, size = 6.75,face="bold",color="black")+
geom_text(aes(y=numbers,label = Val_lbl,vjust = 0.95,hjust=0),size = 5.25 ) + coord_flip(clip = "off", expand = TRUE) + scale_x_reverse() + theme_light() + theme(legend.position = 'none')
#チーム名が長いので、図に収まるように、左側の余白を大きくします
grarank <- grarank + theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_text(colour="navy", size=18),
axis.title.y=element_blank(),
legend.position="none",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.grid.major.x = element_line( size=.1, color="grey" ),
panel.grid.minor.x = element_line( size=.1, color="grey" ),
plot.title=element_text(size=32, hjust=0.5, face="bold", colour="black", vjust=-1),
plot.subtitle=element_text(size=14, hjust=0.5, face="italic", color="black"),
plot.caption =element_text(size=24, hjust=0.5, face="italic", color="black"),
plot.background=element_blank(),
plot.margin = margin(0.5,0.25,0.5,7, "cm"))
plot(grarank)
grarank <- grarank + transition_states(year, transition_length = 4, state_length = 1) + ease_aes('sine-in-out') + enter_fade() + exit_fade()
animate(grarank, nframes = 300,fps = 20,start_pause = 20,duration = 60, width = 740, height = 520,renderer = gifski_renderer("cepa2019.gif"))
animate(grarank,nframes = 400,fps = 20,start_pause = 20,duration = 65, width = 1280, height = 720,renderer = ffmpeg_renderer())
gganimate::anim_save("cepa.mp4", animation = last_animation())
<折れ線グラフ作成>
ggplot(df_ceparank, aes(x=year_n, y=numbers,shape=team,colour=team)) + geom_line(aes(colour=team))+
geom_point() +labs(x="year:日本野球機構のデータから",y="年間入場者数",title="プロ野球 セ・パ両リーグの年間入場者数の推移(1952年~2019年)") + theme(legend.position="right")
------------------------------------------------------------------------------
-------------------------------------------------------------------------------
投稿を拝見しました。自分でRを使って作成してみたところ、animate()の前のtransition_statesで「関数"transition_states"を見つけることができませんでした」というエラーが出るのですが、あらかじめ関数は作られていますか?参考にさせていただきたいです。
返信削除返信が遅くなりました。今、コメントに気づきました。アニメーション関連のRパッケージでは、以下の二つを使っていたと思います。パッケージをインストールしていない場合は、インストールしてみてください。
削除install.packages(gganimate)
install.packages(gifski)
library(gganimate)
library(gifski)