2013-05-16 12 views
9

Ho una domanda molto semplice qui. Ho un set di dati dal 2009-2012. Voglio tracciare i dati con sfaccettature. Ho creato la trama sfaccettata come segue.Visualizza l'asse x su ggplot come mese solo in R

R-codice

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

L'output del codice R sopra è il seguente:

enter image description here

Sulla asse X Voglio solo mostrare il mese. Di default mostra mese e anno. C'è un modo per sbarazzarmi dell'anno?

Il codice completamente riproducibili è la seguente:

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() 

Grazie.

risposta

13

Poiché i valori x sono dati, è possibile utilizzare scale_x_date() per modificare il formato delle etichette. La libreria scales è necessaria per ottenere una migliore formattazione delle interruzioni e delle etichette.

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

Grazie per la risposta. Tuttavia, quando provo a usarlo, visualizzo un errore 'Errore: input non valido: date_trans funziona con oggetti di classe Date only'. Il formato della data che sto usando è POSIXct. –

+0

@Jdbaba Quindi dovresti usare scale_x_datetime(). Aggiornato la mia risposta –

+1

Grazie mille. 'scale_x_datetime' funziona perfettamente. –

Problemi correlati