LoginSignup
2
1

More than 5 years have passed since last update.

Rで日本の人口Treemapプロット

Last updated at Posted at 2018-06-13

概要

Rでデータの可視化を試してみたんだけど、ggplot2のTreemapがうまくいかない人のための記事。使用するデータは2015年度の政府統計です。

(ゼミでコードをシェアしたものの、コードだけでは伝わらないのでは、という懸念を解消するための記事でもある。)

解説

ライブラリとデータのセット

#set libraries
print(search())
library(gdata) #to read xls data
library(treemap) #to use treemap plot
library(dplyr) #to use great data modify function, like group_by

#load data

population <- read.xls("2015_population.xls")
#delete useless columns
population <- population[c("X.5","X.6","X.7")] #dataframe of 3 factors
c_name <- c("state","city","population") #to set columns name
names(population) <- c_name
print(names(population))

ライブラリはinstall.packages() を使ってインストールします。
読み込んだデータには X.数字 というカラムがあるので、必要なもののみ取り出して、populationに入れておきます。
今回は、都道府県、市町村、人口の順でデータを抜き取ったので、カラムの名前をstate, city, populationの順に変えておきます。

文字から数値へ変換する

#modify population column
population <- population[11:length(population[[2]]),] #delete useless values
population$population <- sapply(gsub(',','',population$population),function(x) x[1]) # to eliminate comma on population column
population$population <- as.numeric(population$population)#to change character d-type into numeric d-type

populationカラムには人口が入っていますが、データの型がcharacterであったので、このままでは平均の計算や、プロットしにくいので、numに変換します。
populationカラムのカンマによる数値の区切り (ex. 123,456)を削除し、as.numeric()を使うことで、数値に変換させます。

Treemap

#make treemap
states <- population$state #to reshape population dataframe
population_without_allState <- subset(population, !(city %in% states)) # delete rows where state and city have a same name
rainbow_color <- rainbow(47,s=0.4) #set colors
treemap(population_without_allState,
        index=c("state","city"),vSize = "population", title = "Distribution of the population in Japan",type = "index",fontsize.labels = c(12,8),
        fontcolor.labels = c("white","orange"),fontface.labels = c(2,1),bg.labels =c("transparent"),align.labels = list(c("center","center"),c("right","bottom")),
        overlap.labels = 0.5,inflate.labels = F, fontfamily.title ="HiraKakuPro-W3", fontfamily.labels = "HiraKakuPro-W3",
        fontfamily.legend = "HiraKakuPro-W3",palette = rainbow_color, border.lwds=c(1,1))

populationの中には、県毎の合計が含まれているので、これを削除して、population_without_allStateに入れておきます。
treemapの引数はそれぞれ;

index: treemapで使用するグループの区分
vSize: treemapの面積を何の指標で表すかの設定
bg.labels: 大きい方のグループの文字のバックグラウンドの色の設定。※これを設定しないとかっこ悪いグラフになる
fontface.labels: 文字の形式。1がノーマル, 2が太字,3がイタリック,4が太字イタリック
inflate.labels: Tに設定すると、面積に応じてラベルサイズが大きくなる
fontfamily: これを設定しないと、日本語が〼(マス、豆腐)表示になる
palette: treemapの色設定
border.lwds: グループの堺の太さの設定

treemap.png

まとめ

関東人おおい。県庁所在地つよい。
参考資料: https://www.r-graph-gallery.com/236-custom-your-treemap/
コードはgithubにあります。https://github.com/genkioffice/subsemi_analysis/blob/master/first/chap1_hw.R

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1