Problème de tracé avec la fonction image

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Diane MANZON
Messages : 56
Enregistré le : 18 Juin 2018, 08:31

Problème de tracé avec la fonction image

Messagepar Diane MANZON » 09 Nov 2018, 14:20

Bonjour à tous,

J'ai un problème de "dimension" avec la fonction image. Je veux lui faire tracer un carré (en gris) et délimiter ce carré en vert. Seulement quand j'applique mon code, les lignes vertes sont dans le carré… Or, je voudrais que les lignes vertes encadrent la zone grise.
Comme ce n'est sûrement pas très clair, je vous partage cet exemple reproductible:

Code : Tout sélectionner

r <- 1
scale = 0.1
x <- seq(-r, r, scale)
nrow.m <- ncol.m <- length(x)
Xg <- expand.grid(X1 = 1:nrow.m, X2=1:ncol.m, X3=1:nrow.m)
Xg$X1g <- (Xg$X1-1)*scale-r
Xg$X2g <- (Xg$X2-1)*scale-r
Xg$X3g <- (Xg$X3-1)*scale-r
Xg$D <- as.numeric(runif(nrow(Xg))<0.1)


m <- matrix(nrow=nrow.m,ncol=ncol.m)
m[as.matrix(Xg[1:2])] <- Xg[,7]

lim <- 1.55
plot(0,0,xlim=c(-lim,lim),ylim=c(-lim,lim),asp=1)
image(x,x,m,col=c("gray", "white"),add=TRUE)
Dom <- data.frame(x = c(-1, -1, 1, 1, -1), y = c(-1, 1, 1, -1, -1))
lines(Dom, lwd = 2, col = "green")


Savez-vous pourquoi ?
Merci pour votre aide,

Diane

Guillaume Devailly
Messages : 28
Enregistré le : 22 Déc 2017, 12:31

Re: Problème de tracé avec la fonction image

Messagepar Guillaume Devailly » 09 Nov 2018, 15:41

Il semble que dans image(x, y , z), x et y définissent le milieu des pixels à afficher, et pas leurs bords.
Un code comme celui-ci semble donner le résultat attendu:

Code : Tout sélectionner

x2 <- seq(-0.95, 0.95, length.out = length(x))
image(x2, x2, m,col=c("gray", "white"), xlim = c(-1, 1), add=TRUE)

Diane MANZON
Messages : 56
Enregistré le : 18 Juin 2018, 08:31

Re: Problème de tracé avec la fonction image

Messagepar Diane MANZON » 09 Nov 2018, 15:56

Guillaume Devailly a écrit :Il semble que dans image(x, y , z), x et y définissent le milieu des pixels à afficher, et pas leurs bords.
Un code comme celui-ci semble donner le résultat attendu:

Code : Tout sélectionner

x2 <- seq(-0.95, 0.95, length.out = length(x))
image(x2, x2, m,col=c("gray", "white"), xlim = c(-1, 1), add=TRUE)


Super, merci beaucoup !!


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité