1 二次元の棒グラフ
ベクトルを棒グラフにしてみましょう。ラベルはnames.arg
でも指定できますが、name属性をつけておくと自動的に使います。
[,1]
[1,] 0.7
[2,] 1.9
[3,] 3.1
戻り値は棒の中央の位置で、低水準描画関数で利用できます。
1.1 装飾
引数space
で棒と棒のスペースを指定できます。単位は棒の横幅サイズです。色やラベルはplot
と同様です。
crp <- colorRampPalette(c("lightpink", "deeppink"))
barplot(v, space = 0.5, border = "darkred", col = crp(length(v)), density = 50, angle = 30)
density
とangle
を指定すると見栄えがよくなることが多いです。
1.4 集計してプロット
データフレームの集計はしてくれないのでxtabs
やtable
で行列をつくる必要がります。
2 多次元の棒グラフ
棒グラフの三次元プロットは視認性が悪いので、積み重ねるか、横並びにしましょう。複数のグラフを並べるのも手段です。
2.1 積み重ね
標準では積み重ねになります。
m <- matrix(c(10, 10, 30, 10, 30, 50), 2, 3)
dimnames(m) <- list(Fruit = c("Apple", "Pineapple"), Box = c("A", "B", "C"))
barplot(m, ylim = c(0, 100), legend.text = TRUE, args.legend = list(x = "top", horiz = TRUE))
多次元なので行列を使いますが、dimnames
属性でカテゴリ名を指定しているのに注意してください。また、引数col
,density
,angle
は縦軸の項目数までの色しか参照しません。
legend.text = TRUE
で凡例を表示します。内部でlegend
関数を呼んでいるわけですが、args.legend
でそのパラメーターを指定できます。
2.1.1 比率にする
proportions
関数を使えばデータを比率に変換できます。
par(mar = c(4, 4, 5, 1))
barplot(proportions(m, 2), ylim = c(0, 1), legend.text = TRUE, args.legend = list(x = 2, y = 1.25, xpd = TRUE, horiz = TRUE, xjust = 0.5))
凡例を描画領域の外に出しています。
2.1.2 比率と数量の同時表示
mosaicplot
の特殊形のspineplot
を使うと比率と数量の同時表示が可能です。縦軸の左のラベルが凡例になるので、凡例が手軽に入る利点もあります。
棒と棒の間はspace
ではなくoff
で、数量単位で指定します。戻り値は集計データになります。
spineplot
は因子型で与えられる未集計のデータもプロットできます。spineplot
で行列にまとめられた集計のデータを使う場合は、table
関数などでdimnames
属性が指定された行列を渡すことが推奨されます。
spineplot
は、カテゴリカルデータと数量データの両方を説明変数(横軸)に持てます。カテゴリカルデータの場合はスパインプロット、数量データの場合はスパイログラムと呼び名が変わります。説明変数が数量データの場合はbreaks
で、hist
と同様に集計方法を指定できます。