我知道您可以通过在代码中添加“at=1:6-0.2”或“at=1:6+0.2”来在图表上向左或向右移动箱线图,但当我这样做时情况并非如此我正在使用 plotCI。有谁知道如何执行这个简单的参数调整?我知道这一定很简单,但是这里关于 plotCI 的问题很少。它在包 {gplots} 中。这真让我抓狂!谢谢你的帮助。 -亚历克斯
最佳答案
如果你想移动一切(点和误差条),那么你需要做的就是向 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)
}
这只处理误差条是垂直的情况。但是水平情况的变化是相似的。
关于r - 在 R 中使用 plotCI 时更改参数。(向左或向右移动点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118953/