Изменение параметров при использовании plotCI в R. (Сдвиг точек влево или вправо) - PullRequest
3 голосов
/ 25 мая 2011

Я знаю, что вы можете смещать блокпосты влево или вправо на графике, добавляя к коду «at = 1: 6-0.2» или «at = 1: 6 + 0.2», но это не тот случай, когда Я использую plotCI. Кто-нибудь знает, как выполнить эту простую настройку параметров? Я знаю, что это должно быть легко, но здесь очень мало вопросов о plotCI. Он находится в пакете {gplots}. Это сводит меня с ума! Спасибо за любую помощь. Для -Alex-

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

Если вы хотите сдвинуть все (точки и полосы ошибок), тогда все, что вам нужно сделать, это добавить небольшое значение к параметру 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)
}

Это относится только к случаю, когда полосы ошибок являются вертикальными. Но изменения для горизонтального случая аналогичны.

1 голос
/ 12 мая 2013

Попробуйте это:

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)

......

0 голосов
/ 05 июня 2012

У меня есть хак для этого: вы не перемещаете свои точки данных, скорее, вы перемещаете метки на осях !

например. Вы хотите сместить точки данных вправо на 1 по оси X, скрыть ось X и перерисовать ее новыми метками:

plotCI(..., axes=F) # just ignore the warning
axis(side=1, at=0:99, labels=1,100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...