Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

東京都知事選挙(2016年)開票結果を、R (ggplot)で可視化します

More than 3 years have passed since last update.

イントロ

Rのグラフ描画ライブラリggplotを利用して、東京都知事選挙の開票情報を可視化します。
「全21名の候補者と得票数との関係」についての棒グラフを作成しました。
excelでも充分に同じ事は出来るので、Rを使うメリットというと、好きなように目盛りを調整できたことでしょうか。

実行環境

OS: Mac 10.11.6
R: 3.3.0
ggplot: ggplot2, 2.1.0
RStudio: Version 0.99.896

グラフ

Rstudioを利用しています。plotsを zoom した結果を表示します。
スクリーンショット 2016-08-01 16.25.13.png

データ

下記URLのデータを利用しました。詳細はリンク先をご覧ください。
http://sokuho.h28tochijisen.metro.tokyo.jp/h28chi_kai.html
開票率100.00% 平成28年 8月 1日 1時 05分 確定の情報です。
  
届け出順、候補者名、得票数、政党名は、それぞれ
No. candidate, obtained,partys、としました。
候補者の方々のお名前が、ひらがなが多いのですが、選挙管理委員会側の公式発表に準じています。
htmlからコピーペーストをしてcsvファイルに貼り付けました。
文字化けをしましたので、cot editorというテキストエディタでutf-8へ変換しました。
画像は, View(filename)にて表示させた結果です。

スクリーンショット 2016-08-01 16.26.51.png
スクリーンショット 2016-08-01 16.27.18.png

Rのスクリプトコード

下記のスクリプトコードは、ほとんど、Rグラフィックスクックブック(オライリー)を参考にしています。
(https://www.oreilly.co.jp/books/9784873116532/)
特に、3章の棒グラフ(レシピ3.10)をはじめとするページをよく読みました。

(グラフの軸ラベルは日本語フォントを表示させることを行いました。Macでしか確認していないので、windowsやlinuxとかでどうやるのかは、参考URL先などをご覧ください)
csvファイルは、GUIから読み取ってます。
RstudioのTools>Import Dataset > From local file...
ファイル名をTokyo2016.csvとしました。

Tokyo_bar_scale.R
library(ggplot2)
#csv ファイルを読み込みは、下記のようなコマンドでも可能。
#Tokyo2016 <- read.delim("~/Tokyo2016.csv")
#Rstudioのdata importでも可。

theme_set(theme_bw(base_family = "HiraKakuPro-W3")) 
#MacOSで、日本語フォントを表示でさせる設定

voteorder <- Tokyo2016$candidate[order(Tokyo2016$obtained)]
Tokyo2016$candidate <- factor(Tokyo2016$candidate, levels = voteorder)
#候補者名の要素に得票順に並ぶように並び替える要素を与える。

a <- c(0, 2.5e5 ,5e5, 1.5e6, 3e6)
b <-c("0","25万", "50万", "150万", "300万")
#軸の目盛り(a)と表記の為(b)にベクトルを作成

p <- ggplot(Tokyo2016, aes(y=obtained, x=candidate, fill=factor(partys))) + geom_bar(stat = "identity") 
p + coord_flip() -> p1
#縦軸と横軸との交換
p2 <- p1 + 
  ggtitle("2016 東京都知事選挙 開票情報")+ 
  ylab("得票数") + xlab("候補者名") + #日本語のラベル
  scale_y_continuous(breaks = a, labels = b) + #上述のa, b ベクトルを利用
  theme(legend.position="none") #凡例を表示させない
show(p2)

参考にしたURL, 情報源

Stack over flow のページscale_y_continuousは、factorでは利用できずnumericである必要があるとのこと。
http://stackoverflow.com/questions/29278153/plotting-with-ggplot2-error-discrete-value-supplied-to-continuous-scale

日本語化: https://oku.edu.mie-u.ac.jp/~okumura/stat/first.html
三重大奥村教授の説明。

ggplot2で縦軸と横軸をひっくり返したい
http://qiita.com/kazutan/items/5c4ee243c48a64b44b2d

Rグラフィックスクックブック
http://www.cookbook-r.com

感想

 考えていたよりも、R・ggplotでちょっと慣れないことを凄く難しいです。
 まだまだ、私は初心者ですね。
 次回のAKB48総選挙などのような大きなデータもサクッと解析できたら、便利でしょうねー。
 記事を書いた後で気がつきましたが、次のような記事が既にありました。

[R] 都知事選挙を題材に学ぶ ggplot2 の作例
 http://ill-identified.hatenablog.com/entry/2014/02/22/231809

ryotenabe
プログラミングRまたはpythonについて、なるべく技術的な記事を書くように心がけますが、内容は入門的なものです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away