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.


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,



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


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


O link para detailed explanationestá morto
javadba,
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.