グラフの例:都道府県別人口(ドットプロット)

ここでもデータの例として いろいろな都道府県別データ の人口を使います。

棒グラフは必ず0から始まらなければなりません。折れ線グラフにはこの制約はありませんが,名義尺度では使えません。都道府県のような名義尺度の場合には,(Clevelandの)ドットプロット(dot plot)が便利です。これは,基本的には

# par(family="HiraKakuPro-W3")
dotchart(population, labels=kenmei)

で描けますが,少しだけ凝ってみます:

# quartz(width=4.568898, height=9.960630) # Mac
# par(family="HiraKakuPro-W3")            # Mac
par(mar=c(5,5,2,2)+0.1) # マージン(デフォルト: c(5,4,4,2)+0.1)
par(mgp=c(2,0.8,0))     # 軸マージン(デフォルト: c(3,1,0))
par(xpd=FALSE)          # プロットエリア外に描かない
par(xaxs="i")           # プロットエリアを範囲ぴったりに
o = order(population)
dotchart(population[o]/1000, pch=16, xlim=c(0,14), xlab="人口(100万人)")
par(xpd=TRUE)           # プロットエリア外に描く
text(0, seq_along(o), kenmei[o], pos=2)
axis(3, labels=FALSE)

dotchart() はRで標準のものですが,lattice パッケージにはやや高機能のものが入っています。これは基本的には

library(lattice)
dotplot(kenmei ~ population)

でいいのですが,少しだけ凝ってみます:

library(lattice)
x = reorder(kenmei, population)
dotplot(x ~ population/1000, scales=list(fontfamily="HiraKakuPro-W3"), xlab="")
mtext("人口(百万人)", 1, padj=4.5)

HiraKakuPro-W3 はMacのフォントですので,適宜変更してください。

epicalc パッケージにも dotplot() という関数がありますが,これは点で描いた度数分布図です。epicalc パッケージでは summ() という関数でデータの要約を出力しますが,それに付随して大きい順に並べ替えたデータがプロットされます。こちらのほうがClevelandのドットプロットに近いものです。詳しくは Analysis of epidemiological data using R and Epicalc というオンライン本が公開されています。

epicalc パッケージは epiDisplay パッケージに改編されたようです。Why was package 'epicalc' removed from CRAN? 参照。


Last modified: