Dates avec le mois et le jour dans la série chronologique tracer dans ggplot2 avec la facette pendant des années
Je veux avoir les deux month
et day
dans l'axe des x de la série temporelle de la parcelle lors de l'utilisation de facet
pendant des années dans ggplot2
. Mon MWE est ci-dessous:
set.seed(12345)
Date <- seq(as.Date("2010/1/1"), as.Date("2014/1/1"), "week")
Y <- rnorm(n=length(Date), mean=100, sd=1)
df <- data.frame(Date, Y)
df$Year <- format(df$Date, "%Y")
df$Month <- format(df$Date, "%b")
df$Day <- format(df$Date, "%d")
df$MonthDay <- format(df$Date, "%d-%b")
p <- ggplot(data=df, mapping=aes(x=MonthDay, y=Y, shape=Year, color=Year)) + geom_point() +geom_line(aes(group = 1))
p <- p + facet_grid(facets = Year ~ ., margins = FALSE) + theme_bw()
print(p)
J'ai essayé de contrôler l'axe des x des étiquettes avec la commande suivante
p + scale_y_continuous() + scale_x_date(labels = date_format("%d-%b"))
Mais il déclenche le message d'erreur suivant.
Error: Invalid input: date_trans works with objects of class Date only
Aucune aide pour résoudre ce problème sera fortement appréciée. Merci d'avance pour votre aide.
source d'informationauteur MYaseen208
Vous devez vous connecter pour publier un commentaire.
Vous sont très proches. Vous voulez de l'axe x pour être une mesure de l'année, vous êtes, mais vous avez aussi un caractère de vecteur et donc sont chaque point unique étiquetés. Si vous au lieu de faire une variable continue de représenter cela, vous pourriez avoir de meilleurs résultats. Une variable continue serait le jour de l'année.
L'axe pourrait être formaté date plus-comme avec une étiquette appropriée de la fonction, mais les pauses sont toujours pas trouvé dans une même date-conscient. (Et en plus de cela, il y a un
NA
problème.)Pour obtenir de la bonté de nice date de pauses, une autre variable peut être utilisée. Celui qui possède le même jour de l'année que les données d'origine, mais tout juste un an. Dans ce cas, depuis 2000, c'était une année bissextile. Les problèmes avec cela a surtout à voir avec le saut de jours, mais si vous n'avez pas de soins à ce sujet (le 1er Mars de non bissextile alignerait avec le 29 février d'une année bissextile, etc.) vous pouvez utiliser:
Coller avec votre code @MYaseen208 pour la création de données.
Lorsque vous tracez utilisation
x = Date
et utiliser le dessousJ'ai utilisé facet_wrap, pour obtenir gratuitement x_axis échelles. Lorsque vous divisez vos données, nous ne pouvons pas obtenir les mêmes jour, mois, en association avec chaque année.
Cela semble le faire... je viens de créer manuellement les étiquettes...
Une modification @Brian Diggs' approche qui conserve l'original le jour et le mois (du 1er Mars est préservé comme le 1er Mars plutôt que le 29 Février) est de forcer la date en chaîne de caractères, puis remplacer l'année:
Vous pouvez alors procéder à: