2011-05-25 1 views
3

Je sais que vous pouvez déplacer des rectangles à gauche ou à droite sur un graphique en ajoutant "at = 1: 6-0.2" ou "at = 1: 6+" 0.2 "au code, mais ce n'est pas le cas quand j'utilise plotCI. Est-ce que quelqu'un sait comment effectuer ce réglage de paramètre simple? Je sais que ça doit être facile mais il y a très peu de questions à propos de plotCI ici. C'est dans le paquet {gplots}. Ça me rend fou! Merci pour toute aide. -AlexModification des paramètres lors de l'utilisation de plotCI dans R. (Décaler les points vers la gauche ou la droite)

Répondre

2

Si vous voulez changer tout (points et barres d'erreur) tout ce que vous devez faire est d'ajouter une petite quantité au paramètre x de plotCI:

plotCI(x=myx+0.2,y=...) 

Mais cela semble bizarre , alors peut-être que vous vouliez dire que vous voulez tracer les points dans la bonne position, mais décaler les barres d'erreur légèrement à droite? Cela me semble toujours bizarre, mais cela peut être fait assez facilement en saisissant le code de plotCI, en le mettant dans une fonction wrapper et en ajoutant un petit paramètre offset à votre fonction wrapper qui est passée à la partie pertinente du code plotCI. Après vérification, le code de plotCI est un peu long, donc je ne vais pas reproduire le tout ici. Tapez plotCI sur la console, copiez et collez le résultat dans un fichier texte et appelez la fonction quelque chose de nouveau, comme plotCI_offset. Je crois que si vous changez ensuite les paramètres de coordonnées x de l'appel de la fonction myarrow dans l'instruction if/else finale, vous serez en or.

La nouvelle définition de la fonction ressemblerait à ceci:

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, ...) 

Et j'ai cité les bits modifiés de la fonction ci-dessous:

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, ...) 
    } 
} 

Puis juste là-dessous modifier ce code comme suit:

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) 
} 

Ceci prend uniquement en compte le cas où les barres d'erreur sont verticales. Mais les modifications pour le cas horizontal sont similaires.

0

J'ai un hack pour cela: vous ne déplacez pas vos points de données, plutôt, vous déplacer les étiquettes sur les axes!

par exemple. vous voulez passer vos points de données à droite par 1 sur l'axe x, vous masquez l'axe des x et redessiner avec de nouvelles étiquettes:

plotCI(..., axes=F) # just ignore the warning 
axis(side=1, at=0:99, labels=1,100) 
1

Essayez ceci:

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) 

Maintenant, faites la même, mais comme celui-ci:

plotCI(1:3+.1,m2, ui2, li2,axes=FALSE,col="blue",add=TRUE) 

......

Questions connexes