2013-04-05 105 views
18

没有人知道如何使用ggplot2旋转日期格式的轴刻度吗? 我想在x轴上用45°角度标记“Date-Month”(例如“1985-5”)。日期格式的旋转轴标签

数据样本:

Station Date Ptot 
A 1980-02 16 
A 1980-03 19 
A 1980-04 40 
A 1980-05 48 
A 1980-06 NA 
A 1980-07 18.5 
A 1980-08 24.6 
B 1980-07 50.8 
B 1980-08 28.9 
B 1980-09 32.9 
B 1980-10 47.9 
B 1980-11 16.3 

我尝试这样做:

library(ggplot2) 
library(scales) 

plot <- ggplot(data=na.omit(data), aes(x=Date, y=Ptot, group=Station))+ 
    geom_line()+ 
    facet_grid(Station~.)+ 
    scale_x_date(breaks = "year", labels=date_format("%Y-%m"))+ 
    xlab("Year")+ 
    ylab("Prec (mm)")+ 
    labs(colour = "Station")+ 
    theme(axis.text.x = element_text(angle = 45, hjust = 1))+ 
    theme_bw() 

plot 

,但它不工作。

谢谢!

+1

你必须提供比数据较好的可重复的例子,你的完整代码。 – Arun 2013-04-05 16:12:44

+0

好吧,我只是改善了问题的细节... – user2165907 2013-04-05 16:30:25

+0

检查@Didzis'编辑他在'Date'列解释问题的地方。 – Arun 2013-04-05 16:44:40

回答

29

首先,您应该将列Date作为日期。由于它没有提供日期,因此应该为每个日期添加例如01并将其转换。

data$Date<-as.Date(paste(data$Date,"-01",sep=""),format="%Y-%m-%d") 

为了让标签正确放置在X轴应设置不只是angle=hjust=1确保标签的那一端放置在刻度线之下。另外theme_bw()应放置在轴文本的主题说明之前。

ggplot(data=na.omit(data), aes(x=Date, y=Ptot, group=Station))+ 
    geom_line()+ 
    facet_grid(Station~.)+ 
    scale_x_date(breaks = "month", labels=date_format("%Y-%m"))+ 
    xlab("Year")+ 
    ylab("Prec (mm)")+theme_bw()+ 
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

enter image description here

+0

我正要写这个。 – Arun 2013-04-05 16:44:05

+0

谢谢!我没有提到我已经完成了我的“日期”列的日期转换......我仍然需要学习如何优化此论坛的使用。我的问题是theme_bw() – user2165907 2013-04-05 16:51:39

+1

@ user2165907 theme_bw()的位置也设置了axis.text的参数,所以它应该放在参数之前。 – 2013-04-05 17:02:38