Changer l’espacement des graduations sur l’axe d’une plot?

Comment puis-je modifier l’espacement des graduations sur l’axe d’un tracé?

Quels parameters dois-je utiliser avec un tracé de base ou avec rgl ?

Il existe au moins deux manières d’obtenir ce résultat dans le graphe de base (mes exemples concernent l’axe des x, mais fonctionnent de la même façon pour l’axe des y):

  1. Utilisez par(xaxp = c(x1, x2, n)) ou plot(..., xaxp = c(x1, x2, n)) pour définir la position ( x1 & x2 ) des graduations extrêmes et le nombre de intervalles entre les graduations ( n ). En conséquence, n+1 est le nombre de graduations dessinées. (Cela ne fonctionne que si vous n’utilisez pas d’échelle logarithmique, pour le comportement avec les échelles logarithmiques, voir ?par .)

  2. Vous pouvez supprimer le dessin de l’axe et append les repères plus tard avec axis() .
    Pour supprimer le dessin de l’axe, utilisez plot(... , xaxt = "n") .
    Appelez ensuite axis() avec side , at et labels : axis(side = 1, at = v1, labels = v2) . Avec le side faisant référence au côté de l’axe (1 = axe des x, 2 = axe des y), v1 étant un vecteur contenant la position des tics (par exemple, c(1, 3, 5) si votre axe est compris entre 0 et 0) à 6 et vous voulez trois points), et v2 un vecteur contenant les étiquettes pour les marques de graduation spécifiées (doit avoir la même longueur que v1 , par exemple, c("group a", "group b", "group c") ) . Voir ?axis Axis et ma réponse mise à jour à un article sur stats.stackexchange pour un exemple de cette méthode .

Avec les graphiques de base, le plus simple consiste à arrêter les fonctions de traçage à partir des axes de dessin et à les dessiner ensuite.

 plot(1:10, 1:10, axes = FALSE) axis(side = 1, at = c(1,5,10)) axis(side = 2, at = c(1,3,7,10)) box() 

J’ai un dataset avec l’heure comme axe des abscisses et l’intensité comme axe des ordonnées. Je devrais d’abord supprimer tous les axes par défaut à l’exception des étiquettes des axes avec:

 plot(Time,Intensity,axes=F) 

Puis je reconstruis les éléments de l’insortinggue avec:

 box() # create a wrap around the points plotted axis(labels=NA,side=1,tck=-0.015,at=c(seq(from=0,to=1000,by=100))) # labels = NA prevents the creation of the numbers and tick marks, tck is how long the tick mark is. axis(labels=NA,side=2,tck=-0.015) axis(lwd=0,side=1,line=-0.4,at=c(seq(from=0,to=1000,by=100))) # lwd option sets the tick mark to 0 length because tck already takes care of the mark axis(lwd=0,line=-0.4,side=2,las=1) # las changes the direction of the number labels to horizontal instead of vertical. 

Donc, at = c(...) spécifie la collection de positions pour placer les graduations. Ici, je voudrais mettre les marques à 0, 100, 200, …, 1000. seq(from =...,to =...,by =...) me donne le choix des limites et du incréments.

Et si vous ne voulez pas que R ajoute des décimales ou des zéros, vous pouvez l’empêcher de dessiner l’axe x ou l’axe y ou les deux en utilisant … axt. Ensuite, vous pouvez append vos propres graduations et étiquettes:

 plot(x, y, xaxt="n") plot(x, y, yaxt="n") axis(1 or 2, at=c(1, 5, 10), labels=c("First", "Second", "Third")) 

Je viens de découvrir le package Hmisc.

 library(Hmisc) plot(...) minor.tick(nx=10, ny=10) # make minor tick marks (without labels) every 10th