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と同様に集計方法を指定できます。


