绘制两个不同数据集的相同x轴

时间:2014-01-19 03:10:33

标签: r graph plot axis-labels

我有两个独立的数据集:AUD-USDCHF-JPY,它们看起来像这样(每100毫秒快照一次):

currency,  price, datetime

CHF/JPY,   93.84, 2011-09-06 08:00:00.000   #from 8:00 to 8:30

AUD-USD,   1.84,  2011-09-06 07:00:00.000   #from 7:00 to 9:00

mydata$datetime <- as.POSIXct(data$datetime, tz="GMT")

time1<-as.POSIXct("2011-09-06 7:00:00", tz="GMT")
time2<-as.POSIXct("2011-09-06 9:00:00", tz="GMT")
plot(price~datetime, xaxt="n",main="", xlab="Time", ylab="Price",  data=mydata)

我试过了:

axis(1,at=seq(time1,time2,by="hour"),label=seq(time1,time2,by="hour"))

我希望两个货币对的两个分开的图具有相同的x轴以进行比较。

07:00, 07:30, 08:00, 08:30, 09:00

由于CHF-JPY数据仅在8:00到8:30之间,因此我的x轴不同。

抱歉,我没有足够的声誉来发布图片。


编辑:

  • dput(mydata)

    structure(list(currency = c("CHF/JPY"), price = c(93.84), Volume = c(1), datetime = structure(c(1315296191.6))))
    

3 个答案:

答案 0 :(得分:1)

绘制其中一个时间序列,如上所示,并使用行(second.obj)添加第二个时间序列。如果这不符合您的要求,请发表评论。回应上述内容,我希望您使用dput(my_data)进一步修改问题。

答案 1 :(得分:0)

使用dput(my_data)并首先发布您的示例数据。永远记住发布样本数据很重要,以及发布明确定义的问题。那么只有有人可以回答您的问题。

答案 2 :(得分:0)

喜欢这个吗?

set.seed(1)
df.1 <- data.frame(currency=rep("CHF/JPY",31),
                   price=rnorm(31,60,2),
                   volume=rnorm(31,5e5,1e5),
                   datetime=as.POSIXct("2011-09-06 08:00:00")+seq(0,1800,by=60))
df.2 <- data.frame(currency=rep("AUD-USD",121),
                   price=rnorm(121,50,3),
                   volume=rnorm(121,1e6,1e5),
                   datetime=as.POSIXct("2011-09-06 07:00:00")+seq(0,7200,by=60))
mydata <- rbind(df.1,df.2)

library(reshape2)
library(ggplot2)
gg <- melt(mydata, id=c(1,4))
ggplot(gg) + 
  geom_line(aes(x=datetime, y=value, color=currency)) + 
  stat_smooth(aes(x=datetime, y=value, color=currency),
              formula=y~1,method="lm", se=F, linetype=2)+
  facet_grid(variable~., scales="free")

修改以回应OP的评论。

ggplot(mydata, aes(x=datetime, y=price, color=currency)) +
  geom_line()+
  stat_smooth(formula=y~1,method="lm", se=F, linetype=2)+
  facet_grid(currency~., scales="free")