仅在R中将ggplot上的x轴显示为月份

Jd *_*aba 12 r ggplot2

我这里有一个非常简单的问题.我有一个来自2009-2012的数据集.我想用facet绘制数据.我创建了多面图,如下所示.

R-代码

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

上述R代码的输出如下:

在此输入图像描述

在X轴上我只想显示月份.默认情况下,它显示月份和年份.有什么方法可以摆脱一年吗?

完全可重现的代码如下:

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()
Run Code Online (Sandbox Code Playgroud)

谢谢.

Did*_*rts 18

由于您的x值是日期,您可以使用它scale_x_date()来更改标签的格式.scales需要库来更好地格式化中断和标签.

library(scales)
+scale_x_datetime(labels = date_format("%b"))
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。但是,当我尝试使用它时,我收到一个错误“错误:无效输入:date_trans 仅适用于类 Date 的对象”。我使用的日期格式是 POSIXct。 (2认同)
  • @Nils然后您必须使用参数`date_breaks =“ 1 year”` (2认同)

use*_*745 9

对我来说,有效的是

library(scales)

+ scale_x_date(date_labels = "%b-%d-%Y")
Run Code Online (Sandbox Code Playgroud)

更多信息请点击此处