読者です 読者をやめる 読者になる 読者になる

廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

(R+Google アナリティクス)コロプレス図(塗り分け地図)

コロプレス図(塗り分け地図)

R で地図上にデータを表示する方法はいろいろある。でもシェープファイルを用意しなきゃいけなかったりするのがめんどくさい。そんなときは choroplethr パッケージを使うのが楽でいいと思った。

Google アナリティクスでは(たぶん)IP アドレスからセッション(訪問)がどの地域からあったかっていうデータを取得している。

下図は2015年3月の当ブログのセッション数のコロプレス図です。

f:id:abrahamcow:20150501224428p:plain

首都圏と大阪からのセッションが多い。

ついでにこれを日本全体のインターネット利用人口とくらべてみます。下図が日本の県別インターネット利用人口です。

f:id:abrahamcow:20150501224945p:plain

人口については 統計表一覧 政府統計の総合窓口 GL08020103、インターネット利用率については、総務省|平成24年版 情報通信白書 からデータを持ってきた。

やはりこのブログは首都圏、大阪、愛知からのセッションが多い傾向が伺えます。九州では福岡がちょっと多い。福岡は EC 通販企業がけっこうがんばってるらしいので、その辺の影響かなーと思った。

以下にこの図の書き方を記します。

R のコード

#まずはデータの取得
#アカウントのオーサライズ
library("RGoogleAnalytics")
query <- QueryBuilder()
access_token <- query$authorize()

ここでアクセストークンをコピペ。
(詳しくは RGoogleAnalytics をいじっている - 廿TT を参照。)

###データ抽出時のクエリ###
ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)
query$Init(start.date = "2015-03-01",
           end.date = "2015-03-31",
           dimensions = "ga:region,ga:country", 
           metrics = "ga:sessions",
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
           access_token=access_token)
dat1 <- ga$GetReportData(query)
#データ取得完了
datJP <- subset(dat1,country=="Japan") #日本のみ取り出し

datJP$region <-tolower(datJP$region) #大文字を小文字に変えてる
datJP$region <-sub(" prefecture", "",datJP$region) #いらない文字を消してる

datJP2 <- datJP[-1,-2] #not set の行と country の列を削除
colnames(datJP2) <- c("region","value")

library("choroplethr")
library("choroplethrAdmin1")
#library("dplyr")
data(df_japan_census)

data(df_japan_census)
df_japan_census <- merge(df_japan_census,datJP2,all=TRUE)
sum(df_japan_census[,2])

###描画###
  admin1_choropleth(country.name = "japan",
                    df           = df_japan_census,
                    title        = "",
                    legend       = "sessions")
##動作は遅めでぼくのパソコンだと20秒ちょっとかかった

ついでに棒グラフも書いておく。あれこれ凝ったグラフもいいけど、やっぱり折れ線グラフ、棒グラフ(柱状グラフ)、散布図は優れている。

f:id:abrahamcow:20150501232602p:plain

#棒グラフ
library(ggplot2)
library(scales)
ggplot(datJP2) +
  geom_bar(aes(x=reorder(region,value),y=value),stat="identity") +
  coord_flip()+
  labs(x="",y="")+
  scale_y_continuous(labels = comma)+
  theme_bw(15) 
#日本全体のインターネット利用人口のほう
#ダウンロードしてきたエクセルファイルをちまちま修正してプロット
ibrary(xlsx)
pop1 <-read.xlsx("~/Downloads/a00400.xls",sheetIndex=1,startRow=19,endRow=66)
ut_rate <-read.xlsx("~/Downloads/n4301050.xls",sheetIndex=1,startRow=3,endRow=50)
ut_rate[,1]
pop1 <-data.frame(pop1$Japan,pop1$X127298*1000,ut_rate[,3]/100)

colnames(pop1) <- c("region","pop","ut_rate")
pop1$region <- as.character(pop1$region)
pop1$region <-tolower(pop1$region)
pop1$region <-sub("-ken", "",pop1$region)
pop1$region <-sub("-to", "",pop1$region)
pop1$region <-sub("-fu", "",pop1$region)

df_japan_census$value=(pop1$pop*pop1$ut_rate)

admin1_choropleth(country.name = "japan",
                  df           = df_japan_census,
                  title        = "",
                  legend       = "population")

関連エントリ

abrahamcow.hatenablog.com