4

これが私のサンプルデータです:

set.seed(1234)
myd <- data.frame (SN = 1:100, myv = round (rnorm(100, 5, 5), 2))
boxplot(myd$myv, col = "lightgreen")

4.5 から 8.2 までの信頼区間内にある箱ひげ図の部分を強調したいと思います。また、信頼区間に入らないデータポイント (> 8.2 および 4.5 未満) を表示したいと考えています。出力は次のようになります。

ここに画像の説明を入力

私はただこの目標を達成する必要があります。ggplot2 またはその他のパッケージ ソリューションは大歓迎です。

4

3 に答える 3

6

そのプロットはわかりませんが、違いに合わせて調整できます。

> boxplot(myd$myv, col = "lightgreen", ylim=c(-10,18))s

透明な色を取得する 1 つの方法は、col2rgb を使用して名前付きの色から RGB 値を抽出し、適切にスケーリングされた値で rgb に戻すことです。

> col2rgb("purple")
#      [,1]
#red    160
#green   32
#blue   240
> rect(0.7, 4.5, 1.3, 8.2, col= rgb( red=160/255, green=32/255, blu=240/255, 0.4) )

ポイント値を選択でき、points関数のそのような値の数を「カウント」するための基礎にもなる論理ベクトルを作成する必要があります。

> points(x=rep(1, sum( myd$myv > 8.2 | myd$myv < 4.5 )), 
         y= myd$myv[   myd$myv > 8.2 | myd$myv < 4.5 ] , 
         col="orange", pch=19, bg="orange")

あなたの仕様に合わせて構築... :ここに画像の説明を入力

于 2013-01-07T19:18:56.333 に答える
4

ggplotこれが答えのバージョンです。スヴェンの答えから始めて

interval <- c(4.5, 8.2)
myd <- within(myd, group <- myv >= interval[1] & myv <= interval[2])

ggplotコードは次のようになります

ggplot(myd, aes(x = 0, y = myv)) +
    geom_boxplot(fill = "lightgreen") +
    annotate("rect", ymin = interval[1], ymax = interval[2],
             xmin = -1/2, xmax = 1/2, fill = "blue", alpha = 0.25) +
    geom_point(data=myd[!myd$group,], shape = 21,
               colour = "black", fill = "orange") +
    scale_x_continuous("", breaks = NULL) +
    theme_bw()

ボックスプロット自体は簡単です。青みがかった長方形は、その上の注釈です。ポイントはその上に描画され、データを範囲外のもののみに制限します ( で計算されgroupます)。はscale_x_continuousx 軸の表記をなくし、theme_bw()背景とグリッド線をより明確にします。

ここに画像の説明を入力

sizeレイヤーにを与えることでポイントを大きくすることができgeom_point、その他の調整も可能です。

于 2013-01-07T20:52:30.387 に答える
0

を使用した迅速なソリューションgridBase

set.seed(1234)
myd <- data.frame (SN = 1:100, myv = round (rnorm(100, 5, 5), 2))
boxplot(myd$myv, col = "lightgreen")
sp <- baseViewports()
pushViewport(sp$plot)
grid.rect(default.units='native', width= 1,height=8.2-4.5 ,
            gp=gpar(fill=rgb(1,0,0,0.5)), y = 3)
grid.points(x = rep(1,6) ,y=c(-4,-2,3,9,10,11),
         gp=gpar(col=rgb(1,1,0,0.5),default.units='native'))

ここに画像の説明を入力

于 2013-01-07T19:23:45.930 に答える