5 votes

Dessiner des cercles en R

Je suis en train d'utiliser le package plotrix pour dessiner des cercles.

Et je ne comprends pas ce qui ne va pas avec mon code... :-(

J'ai trois points. Le premier point (1,1) devrait être le centre du cercle. Les deux points suivants (1,4) et (4,1) ont la même distance/rayon par rapport au centre. Donc le cercle dans le graphique devrait passer par ces points, n'est-ce pas?

Et je ne sais pas pourquoi le cercle a l'air faux. Y a-t-il une explication?

  p1 <- c(1,1)
  p2 <- c(4,1)
  p3 <- c(1,4)
  r <- sqrt(sum((p1-p2)^2))

  plot(x=c(p1[1], p2[1], p3[1]),
       y=c(p1[2], p2[2], p3[2]), 
       ylim=c(-5,5), xlim=c(-5,5))
  draw.circle(x=p1[1], y=p1[2], radius=(r))
  abline(v=-5:5, col="#0000FF66")
  abline(h=-5:5, col="#0000FF66")

Jetez un œil à la sortie produite ici

7voto

Ben Bolker Points 50041

Comme le mentionne @Baptiste ci-dessus, vous pouvez utiliser plot(...,asp=1). Cela ne fonctionnera que si vos plages de x et y sont les mêmes (car cela définit le rapport d'aspect physique de votre tracé à 1). Sinon, vous voudrez probablement utiliser la fonction eqscplot du package MASS. Un problème similaire se pose chaque fois que vous essayez de faire des tracés précis d'objets géométriques, par exemple Dessiner des cercles non intersectants

Ce tracé est produit en remplaçant plot par MASS::eqscplot dans votre code ci-dessus :

entrer la description de l'image ici

Remarquez qu'en fonction des détails de ce que R pense de la configuration de votre moniteur, le cercle peut sembler un peu écrasé (même s'il passe par les points) lorsque vous le tracez dans la fenêtre graphique de R - c'était le cas pour moi - mais cela devrait avoir l'air correct dans la sortie graphique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X