2013-05-16 3 views
9

Ich habe eine sehr einfache Frage hier. Ich habe einen Datensatz von 2009-2012. Ich möchte die Daten mit Facetten darstellen. Ich habe das facettierte Diagramm wie folgt erstellt.Anzeige der x-Achse auf ggplot als nur Monat in R

R-Code

ggplot(al02428400,aes(x=date,y=as.numeric(Discharge)))+geom_line()+ylab("Discharge(cfs)")+facet_wrap(~Year,scales=("free_x"))+theme_bw() 

Die Ausgabe des obigen R-Code ist wie folgt:

enter image description here

Auf der X-Achse ich nur den Monat zeigen wollen. Standardmäßig werden Monat und Jahr angezeigt. Gibt es eine Möglichkeit, wie ich das Jahr loswerden kann?

Der vollständig reproduzierbaren Code lautet wie folgt:

library(ggplot2) 

url <- "http://nwis.waterdata.usgs.gov/usa/nwis/uv/?cb_00060=on&cb_00065=on&format=rdb&period=&begin_date=2009-01-01&end_date=2012-12-31&site_no=02428400" 
download.file(url,destfile="Data load for stations/data/alabamariver-at-monroeville-2009.txt") 

al02428400 <- read.table("Data load for stations/data/alabamariver-at-monroeville-2009.txt",header=T,skip=1,sep="\t") 
head(al02428400) 

sapply(al02428400,class) 
al02428400 <- al02428400[-1,] 

names(al02428400)<- c("Agency","SiteNo","Datetime", "TZ","Discharge","Status","Gageheight","gstatus") 
al02428400$date <- strptime(al02428400$Datetime, format="%Y-%m-%d %H:%M") 

al02428400$Discharge <- as.numeric(as.character(al02428400$Discharge)) 
al02428400$Year <- as.numeric(format(al02428400$date, "%Y")) 
ggplot(al02428400,aes(x=date,y=as.numeric(Discharge)))+geom_line()+ylab("Discharge(cfs)")+facet_wrap(~Year,scales=("free_x"))+theme_bw() 

Dank.

Antwort

13

Da Ihre x-Werte ein Datum sind, können Sie das Format der Etiketten mit scale_x_date() ändern. Die Bibliothek scales wird benötigt, um die Formatierung von Brüchen und Etiketten zu verbessern.

library(scales) 
+scale_x_datetime(labels = date_format("%b")) 
+0

Danke für Ihre Antwort. Jedoch, wenn ich versuche, zu verwenden, erhalte ich einen Fehler 'Fehler: Ungültige Eingabe: date_trans arbeitet mit Objekten der Klasse nur Datum'. Das Format des Datums, das ich verwende, ist POSIXct. –

+0

@Jdbaba Dann sollten Sie scale_x_datetime() verwenden. Meine Antwort aktualisiert –

+1

Vielen Dank. 'scale_x_datetime' funktioniert perfekt. –

Verwandte Themen