2017-08-10 2 views
0

J'ai besoin d'aide pour tracer les noms des mois sur l'axe des x, au lieu du niveau auquel les mois sont affectés. Je travaille avec une «année de l'eau», donc Octobre est affecté au niveau 1, et se terminant avec Septembre étant le niveau 12. Je suis sûr que c'est facile, je ne travaille pas souvent avec des facteurs. Merci!R: Caractère au lieu du niveau # sur l'axe x lors du tracé?

recherche Terminé: Plot a character vector against a numeric vector in R

R plotting, date on x axis

Voici un exemple simplifié de mes données

Months<-c("Jan"=4,"Feb"=5,"Mar"=6,"Apr"=7,"May"=8,"Jun"=9,"Jul"=10, 
    "Aug"=11,"Sep"=12,"Oct"=1,"Nov"=2,"Dec"=3) 

    Data<-c(1,2,3,4,5,6,7,8,9,10,11,12) 

    df<-data.frame(Months,Data) 

    >df 
     Months Data 
    Jan  4 1 
    Feb  5 2 
    Mar  6 3 
    Apr  7 4 
    May  8 5 
    Jun  9 6 
    Jul  10 7 
    Aug  11 8 
    Sep  12 9 
    Oct  1 10 
    Nov  2 11 
    Dec  3 12 

    plot(Data~factor(Months), df,las=2) 

Cela met les données au bon endroit avec le bon mois, juste les mauvaises étiquettes .

Répondre

0

Nous pouvons utiliser xaxt = "n" dans plot puis avec axis changer les étiquettes tiques xaxis

plot(Data ~ Months, transform(df, Months = match(row.names(df), 
         month.abb)), las = 2, xaxt = "n", type = "b", col = "blue") 
axis(1, at = seq_len(nrow(df)), row.names(df)) 
+1

Merci, cela a fonctionné comme un charme! – Chabo

0

Utilisez argument pour plotxaxt = "n" puis fonctionner axis.

plot(Data ~ factor(Months), df, las=2, xaxt = "n") 
axis(1, at = factor(df$Months), label = row.names(df)) 
+0

Cette fonction d'axe fonctionnait mieux, car elle conservait l'ordre correct des mois. – Chabo