Quantcast
Channel: グラフ - 廿TT
Viewing all articles
Browse latest Browse all 123

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

$
0
0

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

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


Viewing all articles
Browse latest Browse all 123

Trending Articles