【R】コロプレス図のアニメーション

1.はじめに

総務省統計局が発表している「都道府県・市区町村のすがた(社会・人口統計体系)」に様々なデータがあります。都道府県別のデータのみならず、年次ごとのデータもあります。ここでは、コロプレス図を年によってどのように変化するかをアニメーションで表示する方法を示します。

2.データの準備

都道府県・市区町村のすがた(社会・人口統計体系)」のページから(●)都道府県データ>データ表示を選択します。

地域の選択画面になりますので、[2]地域候補で”00000_全国”以外を選択して[地域を選択]ボタンを押します。地域候補が「00000_全国」のみとなり、選択中地域が47地域となっていることを確認して、[確定]ボタンを押します。

表示項目選択の画面になります。データ化したい情報を選択します。例えば、C3102 農家数(戸)を選択したとします。項目を選択>確定とするとデータが表示されます。

画面右上の[ダウンロード]ボタンを押します。何度かダイアログが出ますがすべて[ダウンロード]ボタンを押し続けます。任意の場所にデータをダウンロードします。

ダウンロードしたデータは処理に不都合なので、少しだけ処理します。データはCSV形式になっていますのでExcelなどで開いて1~8行目を削除します。また、数値のコロン( , )を削除しておいてください。文字化け等の問題を考慮して適切なエンコード(UTF-8, CP392など)で保存してください。

3.コード

アニメーションはアニメーションgifにて実現します。そのために、Rのanimationパッケージをインストールします。
また、このパッケージはImageMagickを使用するので、このソフトウエアもインストールします。このImageMagickはいろいろ癖があるようで、こちらのサイトに詳しく載っています。

  library(animation)
  library(NipponMap)
  
  dat <- read.csv("<<データファイル名>>", header = FALSE, fileEncoding="UTF-8")
  dat <- dat[-1,]   # 不要な1行目を削除
  
  f_year<-table(dat$V2)
  df_year<-data.frame(f_year)
  df <- data.frame(Pref=dat$V4[1:47])
  
  for (i in 1:length(f_year)){
    year_val<-dat[dat$V2==df_year$Var1[i],6]
    df<-cbind(df, year_val)
  }
  col_name<-as.character(df_year$Var1[-length(f_year)])
  colnames(df)<-c("Pref", col_name)
  
  col_start <- 0.2
  col_end <- 0.0
  
  ani.options(outdir=getwd(), convert = '<<ImageMagickインストールフォルダ>>/convert.exe')
  
  replot <- function(n){
  
    for(i in c(2:n)){
  
      df[,i]<-as.numeric(as.character(df[,i]))
      
      datc_k <- cut(df[,i], hist(df[,i], plot=FALSE)$breaks, right=FALSE)
      datc_kcol <- rainbow(length(levels(datc_k)), start = col_start, end=col_end)[as.integer(datc_k)]
  
      par(mar=c(0,0,2,0))
      JapanPrefMap(datc_kcol, main=col_name[i+1])
      legend("bottomright", fill=rainbow(length(levels(datc_k)), start = col_start, end=col_end), legend=names(table(datc_k)))

    }

  }

  saveGIF({replot(length(f_year)-2)}, clean=TRUE, img.name="output", movie.name="output.gif")
  

Rにてsetwd(“<<設定したいフォルダ>>”)コマンドでワーキングディレクトリを指定します。そこに、データファイルも入れておきます。

コードの中でread.csv関数でデータファイル名とエンコードを指定します。また、ani.options()関数でImageMagickをインストールしたフォルダ(convert.exeの場所)をしていします。

4.実行結果

コードの実行が成功すると、output.gifというファイル名でアニメーションgifが生成されます。

下記は、このデータを使って表示した農家数の移り変わりです。

5.おわりに

このように、年ごとの変化をみると新しい発見がありますね。

アニメーションに関しては、こちらのサイトこちらのサイトこちらのSlideShareを参考にさせていただきました。また、日本地図に関しては、こちらのサイトを参考にさせていただきました。

Add a Comment

メールアドレスが公開されることはありません。