Substitua o eixo X por seus próprios valores

95

Tenho uma pergunta sobre o comando plot ().

Existe uma maneira de eliminar totalmente o eixo x e substituí-lo por seus próprios valores? Eu sei que posso me livrar do eixo fazendo

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

e, em seguida, adicione um eixo com

axis(side = 1 etc.)

No entanto, quando adiciono o eixo, obviamente ele ainda se refere aos dados plotados como 'x'. Eu gostaria apenas de plotar os valores 'y' e adicionar o meu próprio eixo x no sentido de apenas "desenhar" o eixo x com os próprios valores especificados. Existe alguma maneira de fazer isso?

O pano de fundo desta questão é que meus dois quadros de dados diferem em seu comprimento e, portanto, não posso traçá-los.

Dani
fonte
Você deseja plotar vetores com comprimentos diferentes ou apenas deseja definir o rótulo x você mesmo? Você poderia dar um exemplo ou dar mais informações sobre o conjunto de dados?
Manoel Galdino,
Você também pode querer ver como combinar dois quadros de dados. Você pode ser capaz de fazer mais gráficos a partir de seus dados e provavelmente torná-los mais informativos.
Sam,
2
possível duplicata de R: Como faço para definir com que plot () rotula o eixo x?
Blue Magister

Respostas:

176

Não tenho certeza se é o que você quer dizer, mas você pode fazer isso:

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

que então fornece o gráfico:

insira a descrição da imagem aqui

tim_yates
fonte
Obrigado Tim! Não é exatamente o que eu estava procurando, mas me ajudou a fazer o que eu queria =)
Dani
5
x e y têm o mesmo comprimento neste caso. como você desenha n rótulos quando o comprimento do outro eixo é m?
Colbert Sesanker
2
apenas para referência: a xaxt="n"opção no plotcomando suprime a rotulagem do eixo x. Se esta opção não estiver incluída, axisserá um NOOP.
Steen de
Isso funciona, mas como faço para girá-lo para que fique vertical? las = 2 não funciona.
runningbirds de
Tentei a solução. xaxt = "n"opção funcionou para séries temporais de classe ts. Mas, no caso de várias séries temporais (classe mts), não funcionou.
Erdogan CEVHER
14

Você também pode definir labels = FALSEdentro axis(...)e imprimir as etiquetas em um comando separado com Texto. Com esta opção você pode girar o texto no texto caso você precise

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)

Explicação detalhada aqui

Imagem com rótulos girados

user9869932
fonte
O link para detailed explanationestá morto
javadba,