web-dev-qa-db-fra.com

Faire des axes carrés en R

Comment puis-je utiliser R pour que les axes soient toujours carrés dans les diagrammes de dispersion? par exemple dans:

> plot(iris)

ou

> plot(iris$Petal.Width, iris$Petal.Length)

Je voudrais que les axes soient carrés, c'est-à-dire la même longueur et les mêmes étiquettes pour les axes x et y.

La réponse actuellement proposée ne fonctionne pas: l'appel,

plot(iris$Petal.Width, iris$Petal.Length, xlim=c(0,10), ylim=c(0,10), asp=1)

Génère:

enter image description here

qui n'est pas carré et qui n'a pas les mêmes graduations d'axe et étiquettes de graduation. Les espaces entre les étiquettes de tick x doivent être les mêmes et le tracé doit être carré et non rectangulaire.

25
user248237

Vous devez également définir pty="s" dans les paramètres graphiques pour rendre la zone de tracé carrée (indépendamment de la taille et des limites de l'appareil):

par(pty="s")
plot(iris$Petal.Width, iris$Petal.Length, asp=1)
lines(2+c(0,1,1,0,0),3+c(0,0,1,1,0)) # confirm square visually

talllong

45
Andy Barbour

Tout d'abord, pour moi, l'intrigue déjà sort carré (grande image). Ce n'est clairement pas le cas pour vous, et vous devrez peut-être de toute façon faire des tracés plus grands que l'écran.

Ainsi, la taille du tracé est contrôlée par la taille de la zone de sortie, c'est-à-dire la fenêtre du tracé, le fichier image ou autre. En utilisant Rstudio , vous pouvez utiliser l'interface graphique intégrée la taille de tracé spécifiée. Si vous insistez pour utiliser la console de base R, vous devrez effectuer manuellement l'exportation. Ouvrez d'abord le fichier:

png("image.png", width=600, height=600)

Cela ouvrira un fichier image dans le répertoire de travail avec des proportions égales. Tracez maintenant:

x = iris$Petal.Width
y = iris$Petal.Length
all = c(x,y)
range = c(min(all), max(all))
plot(x, y, xlim=range, ylim=range)

Et fermez le fichier:

dev.off()

Le résultat:

enter image description here

4
Superbest