web-dev-qa-db-fra.com

Comment spécifier les valeurs réelles de l'axe x à tracer sous forme de graduations d'axe x dans R

Je crée une parcelle dans 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)

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

50, 100, 150, 200

Cependant, je souhaite tracer les 20 valeurs 10,20, 30 ... 200 Stockées dans la variable x, en tant que valeurs de l'axe X. J'ai parcouru d'innombrables blogs et le manuel concis - après des heures de recherche, le mieux que je connaisse pour trouver quelque chose d'utile est constitué des instructions (résumées) suivantes:

  1. appelez plot() ou par(), en spécifiant l'argument xaxt='n'
  2. appelez 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 d'axe x. Est-il possible que quelqu'un sache comment faire cela? Je ne peux pas croire que personne n’a jamais essayé de le faire auparavant.

54

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

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

Option 1: utilisez xaxp pour définir les étiquettes d'axe

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 donnent le même graphique:

enter image description here


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.

81
Andrie

Regardez de plus près au ?axis Documentation. Si vous regardez la description de l'argument labels, vous verrez qu'il est:

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

Donc, changez-le en vrai et vous obtiendrez vos étiquettes de ticks.

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 R ne puisse pas écrire toutes vos étiquettes si vous n’étirez pas la largeur de la fenêtre, alors 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 sur Google, et le premier lien que vous obtiendrez est le suivant: page Quick R 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 toutes les questions de tracé, ce sera plus rapide que d’attendre une réponse SO.

5
nograpes

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"))
2
fara

En cas de série chronologique de tracé, 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))
0
emeryville