Stacked histogram(積み上げヒストグラム)の作り方を質問されたので調べてみました。Latticeのhistogram()で書けないかと試したけど引数のgroupsを受け付けない模様。R-helpに
同じ質問がありました。しかもlattice作者Deepayan Sarkarが「stacked histogramはlatticeには実装しないよ。必要なら自分で書いてね」と
お返事している。自分で書くのは…と思いつつ次のレスを読むと「何度も同じ質問されるから、書いてあげたよ…」とpanel functionの
スクリプトが!Rユーザーのサポートも大変ですね。
とりあえず、
ここのおまじないを読み込ませます。histogramの引数としては、groups: 任意のグループ指定。panel = panel.grouped.histogram:“おまじない”を指定するのでこのまま。auto.key:凡例。type:ヒストグラムの種類("percent", "count", "density")を選べます。
適当に作った例はこんな感じ↓
mydata <- data.frame("weight"=rnorm(1000,20,3),
"class"=rep(c("Control","Treatment"),500))
histogram(~weight, data = mydata, groups = class, type = "count",
panel = panel.grouped.histogram,
auto.key = list(space = "top", reverse.rows = TRUE,
points = FALSE, rectangles = TRUE))
普通にグループごとにヒストグラム書くとこんな感じ↓
histogram(~weight | class, data= mydata, type = "count")
Deepayan様推奨のdensityplotだとこんな感じ↓
densityplot(~weight, data = mydata, groups = class,
auto.key = list(space = "top", reverse.rows = TRUE,
points = TRUE, rectangles = FALSE))
Histograms are bad enough to begin with.
連続データならやっぱりdensityplotですかねぇ。Rは教育的だなぁ。