2016-06-28 154 views
1

我有一些我想绘制的数据,即布朗山顶上2013年的平均每日风速。有一分不少,所以这里是一个看前几行只是为了给一个想法:格式化x轴

Mean Daily WindSpeed

我可以绘制数据,并使它看起来不错,除了x轴。这里是我的代码示例至今:

>attach(Brown_Top_2013) 
>BT<-ggplot(Brown_Top_2013, aes(TIMESTAMP, Sum.Of.WS_Avg)) 
> >BT+geom_point(col="royalBlue")+labs(x="Date", y="Mean Wind Speed (m/s)", title= "Daily Mean Wind Speed 2013"+scale_x_discrete(breaks=seq(01/03/13, 12/27/13,1)) 

这可以让我一个体面看情节,但它不包括沿x轴的任何蜱,像这样:

Mean Daily Wind Speed Plot

最终,我想让ggplot在x轴上显示每个月的至少一天。 任何帮助将不胜感激,因为我已经搜索了几个小时,试图找出这个问题。我有一种感觉,它可能与TIMESTAMP日期设置的方式有关,但让我知道你的想法!

+0

也许你需要'scale_x_date',而不是'scale_x_discrete' 。 – aosmith

+0

看看'seq(01/03/13,12/27/13,1)'的输出。它是一个单一数字(0.02564103),可能不在您的实际x范围内,因此没有中断,导致缺少x轴刻度。可能你想要的东西像'seq(as.Date(“2013-01-03”),as.Date(“2013-12-12”),by =“1 day”),尽管你可能每周都想休息一下或一个月,而不是每一天。 (我在这里假设'TIMESTAMP'被格式化为Date,而不是字符或因素。) – eipi10

+0

另外,最好避免使用'attach',一般使用'attach',而使用'ggplot'时不需要。 “ggplot”的第一个参数是数据框,它使得数据框的列在本地ggplot环境中可用。 – eipi10

回答

1

退房scale_x_date

BT<-ggplot(Brown_Top_2013, aes(TIMESTAMP, Sum.of.WS_Avg)) 
BT+geom_point(col="royalBlue")+labs(x="Date", y="Mean Wind Speed (m/s)", title= "Daily Mean Wind Speed 2013")+scale_x_date(date_breaks = "1 month", date_labels="%b %d") 
0

另一种解决方案可能是下列之一:

BT<-ggplot(Brown_Top_2013, aes(TIMESTAMP, Sum.of.WS_Avg)) 

BT+geom_point(col="royalBlue")+ 
    labs(x="Date", 
     y="Mean Wind Speed (m/s)", 
     title= "Daily Mean Wind Speed 2013")+ 
    scale_x_discrete(
     labels = seq.Date(as.Date("01/03/13","%m/%d/%y"), as.Date("12/27/13","%m/%d/%y"), by = "day")) 

你必须改变breaks =labels =

+0

如果我正确理解scale_x_discrete函数不会试图为日期序列中的每一天添加标签吗? –

+0

对于我的例子,我尝试过(有两个日期)这个工程...我不知道函数'scale_x_date',所以你的答案更优雅。 –