R: GDP pppのシェアの推移をアニメーション, ggplot2, gganimate, Quandl

Last Updated on February 13, 2019 by shibatau

これはびっくり!gganimateでggplot2で作成したグラフをアニメにしました。Rではggplotは標準的なグラフ作成ライブラリですので、つううにグラフを描けば、それを簡単にアニメにできるようになったということです。

 

Quandlで中国、米国、インド、日本のGDPのシェア(%)の変遷をグラフにしました。

ggplot2でグラフにするには、縦長のデータにする必要があります。横長から縦長にするのにtidyrを使いました。

アニメーションの書き出し形式を選べるようですが、下はデフォルトのgifアニメーションです。

新しいライブラリなので、ネット上には古い式の書き方のものもありますので注意が必要です。

 

世界のGDP総額(ppp)に対する中国、米国、インド、日本のシェア(%)の変遷

 

スクリプト

library(ggplot2)
library(gganimate)
library(tidyr)
library(Quandl)
# put your key
Quandl.api_key("YOURKEY")
# get the four data
japan <- Quandl("ODA/JPN_PPPSH", start_date="1980-12-07")
china <- Quandl("ODA/CHN_PPPSH", start_date="1980-12-07")
india <- Quandl("ODA/IND_PPPSH", start_date="1980-12-07")
usa <- Quandl("ODA/USA_PPPSH", start_date="1980-12-07")
# put the name of the country to each of the data as a column name
colnames(japan) <- c("date", "japan")
colnames(china) <- c("date", "china")
colnames(india) <- c("date", "india")
colnames(usa) <- c("date", "usa")
# merge the three data frames
gdp_four <- Reduce(function(x,y) merge(x,y,by="date",all=TRUE) ,list(japan,china,india, usa))
# transform the data from wide to long
gdp_four_long <- gather(gdp_four, country, gdp, japan:usa, factor_key=TRUE)
# create a multiline graph and animate it
p1 = ggplot(aes(y = gdp, x = date, colour = country), data = gdp_four_long) +
  geom_line(size = 0.5)
p1
last_plot() + 
  transition_reveal(date)
# save the animation
anim_save("gdpFour.gif")

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.