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

廿TT

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

R: 複数回答のアンケートのグラフの例

R グラフ

経緯


複数回答ありの場合、合計が100%を超えてしまうので、円グラフや帯グラフは使えない。

レーダーチャート

上田尚一が推奨した風配図は「レーダーチャート」といったほうがわかりやすい。

From Parallel Plot to Radar Plot によれば、こうすると ggplot2 でレーダーチャートがかける。

library(ggplot2)
Q=c("教育","医療","都の行財政改革","景気・雇用","治安・防災",
    "貧困対策","東京五輪・パラリンピックの準備",
    "交通・インフラ整備","分からない・無回答")
A=c(41.9, 39.9, 28.8, 27.9,16.4,12.4,9.7,5.7,0.7)
coord_radar <- function (theta = "x", start = 0, direction = 1){
    theta <- match.arg(theta, c("x", "y"))
    r <- if (theta == "x") 
      "y"
    else "x"
    ggproto("CordRadar", CoordPolar, theta = theta, r = r, start = start, 
            direction = sign(direction),
            is_linear = function(coord) TRUE)
}
ggplot(data.frame(Q=Q,A=A))+
  geom_polygon(aes(x=reorder(Q,-A),y=A,group=1),colour="black",fill=NA)+
  coord_radar()+
  theme_gray(base_family = "HiraKakuProN-W3")+
  xlab("")+ylab("")

f:id:abrahamcow:20160720015640p:plain

データ出典:【東京都知事選・序盤情勢】小池百合子氏、一歩リード 鳥越俊太郎氏、増田寛也氏が急追 序盤情勢(1/2ページ) - 産経ニュース(2つまで回答可)

ただ文字が切れてしまったりしていて、好みではない。

plotrix パッケージを使ったほうがかんたんなようだ。

library(plotrix)
par(family = "HiraKakuProN-W3") #mac ユーザーは日本語のフォントを指定
radial.plot(A,labels=Q,rp.type="p",radial.labels = c(seq(10,40,by=10),NA))

f:id:abrahamcow:20160720020025p:plain

棒グラフ

上田先生は風配図推しのようだったが、ふつうの人の目は極座標表示になれていないので、棒グラフでいいがな、という気がする。

奥村先生は グラフの例:アンケート(複数回答) で、「複数回答の場合は,棒の間のスペースを残しておく。また,絶対に円グラフにしない」としている。

f:id:abrahamcow:20160720020321p:plain

library(cowplot)
ggplot(data.frame(Q=Q,A=A))+
  geom_bar(aes(x=reorder(Q,A),y=A),stat="identity")+
  coord_flip()+
  theme_cowplot(font_family = "HiraKakuProN-W3")+
  xlab("")+ylab("")

その他の注意点

複数回答ありで割合表示にした場合、「のべ回答数に対する割合」か「回答者数に対する割合」か、二通りの解釈がありうる。その点も明記しておいたほうがいい。

参考文献・参考になりそうな文献

統計グラフのウラ・オモテ―初歩から学ぶ、グラフの「読み書き」 (ブルーバックス)

統計グラフのウラ・オモテ―初歩から学ぶ、グラフの「読み書き」 (ブルーバックス)

統計データの視覚化 (Rで学ぶデータサイエンス 12)

統計データの視覚化 (Rで学ぶデータサイエンス 12)

エンジニアのための データ可視化[実践]入門 ~D3.jsによるWebの可視化 (Software Design plus)

エンジニアのための データ可視化[実践]入門 ~D3.jsによるWebの可視化 (Software Design plus)