Если вы хотите сдвинуть все (точки и полосы ошибок), тогда все, что вам нужно сделать, это добавить небольшое значение к параметру x plotCI:
plotCI(x=myx+0.2,y=...)
Но это кажется странным, поэтому, возможно, вы имели в виду, что вы хотите построить точек в правильном положении, но сместить ошибок немного вправо? Это все еще кажется мне странным, но это можно сделать довольно легко, если взять код для plotCI, поместить его в функцию-обертку и добавить небольшой параметр смещения в функцию-обертку, который передается в соответствующую часть кода plotCI.
После проверки, этот код для plotCI немного длинный, поэтому я не буду воспроизводить все это здесь. Введите в консоли plotCI, скопируйте и вставьте результат в текстовый файл и вызовите функцию, например, plotCI_offset. Я полагаю, что если вы затем измените параметры координаты x вызова функции myarrow в заключительном операторе if / else, вы будете золотой.
Новая функция 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)
}
Это относится только к случаю, когда полосы ошибок являются вертикальными. Но изменения для горизонтального случая аналогичны.