コードに「at=1:6-0.2」または「at=1:6+0.2」を追加することで、ボックスプロットをグラフの左または右にシフトできることは知っていますが、plotCI を使用している場合はそうではありません. この簡単なパラメータ調整を実行する方法を知っている人はいますか? 簡単でなければならないことはわかっていますが、ここでは plotCI に関する質問はほとんどありません。パッケージ {gplots} にあります。これは私を夢中にさせています!助けてくれてありがとう。-アレックス
3 に答える
すべて(ポイントとエラー バー)をシフトしたい場合は、plotCI の x パラメータに少量を追加するだけです。
plotCI(x=myx+0.2,y=...)
しかし、それは奇妙に思えます。ポイントを正しい位置にプロットしたいのに、エラー バーを少し右にずらしたいということでしょうか? それは私にはまだ奇妙に思えますが、plotCI のコードを取得し、それをラッパー関数に入れて、plotCI コードの関連部分に渡される小さなオフセット パラメーターをラッパー関数に追加することで、かなり簡単に実行できます。
調べてみると、plotCI のコードは少し長いので、ここではすべてを再現しません。コンソールに「plotCI」と入力し、結果をコピーしてテキスト ファイルに貼り付け、plotCI_offset などの新しい関数を呼び出します。その後、最後の if/else ステートメントで myarrow 関数呼び出しの x 座標パラメーターを変更すると、うまくいくと思います。
新しい関数 def は次のようになります。
plotCI_offset <- function (x, y = NULL, uiw, liw = uiw, ui, li, err = "y", ylim = NULL,
xlim = NULL, type = "p", col = par("col"), barcol = col,
pt.bg = par("bg"), sfrac = 0.01, gap = 1, lwd = par("lwd"),
lty = par("lty"), labels = FALSE, add = FALSE, xlab, ylab,
minbar, maxbar,offset=0.2, ...)
そして、以下の関数の変更されたビットを引用しました。
if (!add) {
if (invalid(labels) || labels == FALSE)
#Add offset here to ensure plot window is right size
plot(x+offset, y, ylim = ylim, xlim = xlim, col = col, xlab = xlab,
ylab = ylab, ...)
else {
plot(x, y, ylim = ylim, xlim = xlim, col = col, type = "n",
xlab = xlab, ylab = ylab, ...)
text(x, y, label = labels, col = col, ...)
}
}
次に、このコードを次のように変更します。
if (err == "y") {
if (gap != FALSE)
gap <- strheight("O") * gap
smidge <- par("fin")[1] * sfrac
if (!is.null(li))
#Add offset to CIs
myarrows(x+offset, li, x+offset, pmax(y - gap, li), col = barcol,
lwd = lwd, lty = lty, angle = 90, length = smidge,
code = 1)
if (!is.null(ui))
myarrows(x+offset, ui, x+offset, pmin(y + gap, ui), col = barcol,
lwd = lwd, lty = lty, angle = 90, length = smidge,
code = 1)
}
これは、エラー バーが垂直である場合にのみ対処します。しかし、水平の場合の変更は似ています。
これを試して:
require(plotrix)
plotCI(1:3-0.1, m1, ui1, li1, xlab="Itens", ylab="Eta2",axes=FALSE)
axis(side=1,at=1:9,label=c(x1,x2,x3),padj=0,las=1)
axis(side=2)
同じことをしますが、次のようにします。
plotCI(1:3+.1,m2, ui2, li2,axes=FALSE,col="blue",add=TRUE)
……
そのためのハックがあります。データポイントを移動するのではなく、軸上のラベルを移動します!
たとえば、x 軸でデータ ポイントを 1 だけ右にシフトしたい場合は、x 軸を非表示にして、新しいラベルで再描画します。
plotCI(..., axes=F) # just ignore the warning
axis(side=1, at=0:99, labels=1,100)