web-dev-qa-db-ja.com

ジッタを含む散布図に箱ひげ図を追加する方法

次のコマンドを使用して、ジッタを含む散布図を作成しています。

ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T))
library(lattice)
stripplot(NUMS~GRP,data=ddf, jitter.data=T)

これらのポイント(グループごとに1つ)にボックスプロットを追加します。検索しようとしましたが、すべてのポイント(外れ値だけでなく)とジッターをプロットしたコードを見つけることができません。どうすれば解決できますか。ご協力いただきありがとうございます。

22
rnso

基本グラフィックスを使用する1つの方法を次に示します。

boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')
stripchart(NUMS ~ GRP, vertical = TRUE, data = ddf, 
    method = "jitter", add = TRUE, pch = 20, col = 'blue')

enter image description here

37
Rich Scriven

_ggplot2_でこれを行うには、次を試してください:

_ggplot(ddf, aes(x=GRP, y=NUMS)) + 
  geom_boxplot(outlier.shape=NA) + #avoid plotting outliers twice
  geom_jitter(position=position_jitter(width=.1, height=0))
_

ggplot2 version of boxplot + jitter

明らかに、position_jitter()の幅と高さの引数を好みに合わせて調整できます(高さのジッターによりプロットが不正確になるため、_height=0_をお勧めします)。

23
JVL

パッケージplotteR内にspreadPoints()というR関数を作成しました。パッケージは、次のコードを使用してRライブラリに直接インストールできます。

install.packages("devtools")
library("devtools")
install_github("JosephCrispell/basicPlotteR")

提供されている例では、次のコードを使用して下の図の例を生成しました。

ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5],500,replace=T))

boxplot(NUMS ~ GRP, data = ddf, lwd = 2, ylab = 'NUMS')

spreadPointsMultiple(data=ddf, responseColumn="NUMS", categoriesColumn="GRP",
                     col="blue", plotOutliers=TRUE)

enter image description here

これは進行中の作業です(入力としての数式の欠如は不格好です!)が、データの要約のようなバイオリンとしても機能するX軸上の点を広げる非ランダムな方法を提供します。興味のある方は、ソース code をご覧ください。

1
Joseph Crispell

latticeソリューションの場合:

_library(lattice)
ddf = data.frame(NUMS = rnorm(500), GRP = sample(LETTERS[1:5], 500, replace = T))
bwplot(NUMS ~ GRP, ddf, panel = function(...) {
  panel.bwplot(..., pch = "|")
  panel.xyplot(..., jitter.x = TRUE)})
_

デフォルトの中央ドット記号は、_pch = "|"_のある行に変更されました。ボックスおよびウィスカーの他のプロパティは、trellis.par.set()関数を介して_box.umbrella_および_box.rectangle_で調整できます。ジッターの量は、factorという名前の変数で調整できます。ここで、_factor = 1.5_は50%増加します。

lattice solution to boxplot with scatter

1
David O