Comment spécifier les valeurs réelles de l’axe des x à tracer lorsque les ticks de l’axe x dans R

Je crée un tracé en R et je n’aime pas que les valeurs de l’axe x soient tracées par R.

Par exemple:

x <- seq(10,200,10) y <- runif(x) plot(x,y) 

Cela trace un graphique avec les valeurs suivantes sur l’axe des X:

50, 100, 150, 200

Cependant, je veux tracer les 20 valeurs 10,20, 30 ... 200 stockées dans la variable x, comme les valeurs de l’axe X. J’ai parcouru d’innombrables blogs et le manuel simplifié – après des heures de recherche, les instructions suivantes (résumées) sont les suivantes:

  1. call plot() ou par() , en spécifiant l’argument xaxt='n'
  2. appel axis() par exemple axis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)

Je l’ai essayé et le tracé résultant n’avait aucune valeur de l’axe des x. Est-il possible que quelqu’un là-bas sache comment faire cela? Je ne peux pas croire que personne n’a jamais essayé de le faire avant.

Vous trouverez la réponse à votre question dans la page d’aide de ?axis .

Voici l’un des exemples de pages d’aide, modifié avec vos données:

Option 1: utilisez xaxp pour définir les étiquettes des axes

 plot(x,y, xaxt="n") axis(1, xaxp=c(10, 200, 19), las=2) 

Option 2: Utilisez at et seq() pour définir les étiquettes:

 plot(x,y, xaxt="n") axis(1, at = seq(10, 200, by = 10), las=2) 

Ces deux options génèrent le même graphique:

entrer la description de l'image ici


PS Comme vous avez un grand nombre d’étiquettes, vous devrez utiliser des arguments supplémentaires pour que le texte tienne dans le tracé. J’utilise las pour faire pivoter les étiquettes.

Examinez de plus près la documentation sur les ?axis . Si vous regardez la description de l’argument des labels , vous verrez que c’est:

 "a logical value specifying whether (numerical) annotations are to be made at the tickmarks," 

Alors, changez simplement en vrai et vous obtiendrez vos étiquettes de tique.

 x <- seq(10,200,10) y <- runif(x) plot(x,y,xaxt='n') axis(side = 1, at = x,labels = T) # Since TRUE is the default for labels, you can just use axis(side=1,at=x) 

Veillez à ce que, si vous n’étendez pas la largeur de votre fenêtre, R ne puisse pas écrire toutes vos étiquettes. Jouez avec la largeur de la fenêtre et vous verrez ce que je veux dire.


Dommage que vous ayez eu tant de mal à trouver de la documentation! Quels étaient vos termes de recherche? Essayez de taper r axis dans Google, et le premier lien que vous obtiendrez sera cette page Quick R que j'ai mentionnée précédemment . Faites défiler jusqu'à "Axes", et vous obtiendrez un très joli petit guide sur la façon de le faire. Vous devriez probablement vérifier d'abord pour toute question de traçage, ce sera plus rapide que d'attendre une réponse SO.

J’espère que ce codage vous aidera 🙂

 plot(x,y,xaxt = 'n') axis(side=1,at=c(1,20,30,50),labels=c("1975","1980","1985","1990")) 

Dans le cas du traçage des séries temporelles, la commande ts.plot nécessite un argument différent de xaxt="n"

 require(graphics) ts.plot(ldeaths, mdeaths, xlab="year", ylab="deaths", lty=c(1:2), gpars=list(xaxt="n")) axis(1, at = seq(1974, 1980, by = 2))