Remplacer l'axe X par ses propres valeurs

95

J'ai une question concernant la commande plot ().

Existe-t-il un moyen d'éliminer complètement l'axe des x et de le remplacer par ses propres valeurs? Je sais que je peux me débarrasser de l'axe en faisant

plot(x,y, xaxt = 'n')

puis ajoutez un axe avec

axis(side = 1 etc.)

Cependant, lorsque j'ajoute l'axe, il fait évidemment toujours référence aux données tracées en tant que «x». Je voudrais seulement tracer les valeurs 'y' et ajouter mon propre axe x dans le sens de simplement "dessiner" l'axe x avec ses propres valeurs spécifiées. Y'a-t'il un quelconque moyen d'y arriver?

Le contexte de cette question est que mes deux blocs de données diffèrent par leur longueur et que je ne peux donc pas les tracer.

Dani
la source
Voulez-vous tracer des vecteurs de différentes longueurs ou simplement définir l'étiquette x par vous-même? Pourriez-vous donner un exemple ou donner plus d'informations sur l'ensemble de données?
Manoel Galdino
Vous voudrez peut-être également voir comment combiner deux blocs de données ensemble. Vous pourrez peut-être créer plus de tracés à partir de vos données et probablement rendre les données plus informatives.
Sam

Réponses:

176

Je ne sais pas si c'est ce que vous voulez dire, mais vous pouvez le faire:

plot(1:10, xaxt = "n", xlab='Some Letters')
axis(1, at=1:10, labels=letters[1:10])

qui vous donne alors le graphique:

entrez la description de l'image ici

tim_yates
la source
Merci Tim! Pas exactement ce que je cherchais mais cela m'a aidé à faire ce que je voulais =)
Dani
5
x et y ont la même longueur dans ce cas. comment dessiner n étiquettes quand la longueur de l'autre axe est m?
Colbert Sesanker
2
juste pour référence: l' xaxt="n"option de la plotcommande supprime l'étiquetage de l'axe des x. Si cette option n'est pas incluse, axissera un NOOP.
Steen
Cela fonctionne, mais comment puis-je le faire pivoter pour qu'il soit vertical? las = 2 ne fonctionne pas.
runningbirds
J'ai essayé la solution. xaxt = "n"option a fonctionné pour les séries chronologiques de classe ts. Mais, dans le cas de séries chronologiques multiples (classe mts), cela ne fonctionnait pas.
Erdogan CEVHER
14

Vous pouvez également placer à l' labels = FALSEintérieur axis(...)et imprimer les étiquettes dans une commande séparée avec du texte. Avec cette option, vous pouvez faire pivoter le texte du texte au cas où vous en auriez besoin

lablist<-as.vector(c(1:10))
axis(1, at=seq(1, 10, by=1), labels = FALSE)
text(seq(1, 10, by=1), par("usr")[3] - 0.2, labels = lablist, srt = 45, pos = 1, xpd = TRUE)

Explication détaillée ici

Image avec étiquettes pivotées

user9869932
la source
Le lien vers detailed explanationest mort
javadba