使用ggplot2在x轴上设置日期

时间:2017-04-21 13:07:15

标签: r date ggplot2 axis

我已经完成了所有类似的问题,但我仍然很难找到解决问题的方法。

我有这段代码:

$today=date("Y-m-d", strtotime('-1 day')); // We remove oneday from today
$begin = $today;
$end = '2017-01-01';

function getDatesFromRange($a,$b,$x=0,$dates=[]){
    while(end($dates)!=$b && $x=array_push($dates,date("Y-m-d",strtotime("$a +$x day"))));
    return $dates;
}
$arrayDates = getDatesFromRange($end,$begin);
$reverseDates = array_reverse($arrayDates); // then we reverse array

var_dump($reverseDates);

这是图表 - Plot

我还有变量日期

finl <- as.data.frame(cbind(plus,centre,minus,indx))
head(finl)

> head(finl)
     plus    centre     minus indx
1 0.5202951 0.3699147 0.2195342    1
2 0.5328857 0.3890009 0.2451162    2
3 0.5421306 0.3979195 0.2537085    3
4 0.6421294 0.5154826 0.3888357    4
5 0.7312431 0.6132432 0.4952434    5
6 0.7325199 0.6089201 0.4853203    6


ggplot(finl) +
geom_line(aes(indx,centre), group = 1) +
geom_ribbon(aes(x = indx, ymax = plus , ymin = minus), alpha = 0.6, fill = "skyblue") +
ggtitle("Movement over time")+
theme(plot.title = element_text(size=20, face = "bold")) +
theme(plot.title = element_text(hjust = 0.5)) +
theme(axis.text.x=element_blank(),
    axis.ticks.x=element_blank(), 
    axis.title = element_text(size=14))+
labs(x="Period", y="Y-value")

我的问题是如何将这些日期作为x轴放在我的图表上?

我已尝试使用 scale_x_date ,但不知怎的,我无法解决此问题并获得适当的图表。我得到一些奇怪的结果。

提前谢谢你。

1 个答案:

答案 0 :(得分:2)

首先将日期插入dataframe

finl<-cbind(finl,date)

然后将indx替换为date代码中finl的{​​{1}}列