【问题标题】:Plot same x-axis for two different data sets为两个不同的数据集绘制相同的 x 轴
【发布时间】:2014-02-08 08:50:33
【问题描述】:

我有两个独立的数据集: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))))
    

【问题讨论】:

    标签: r graph plot axis-labels


    【解决方案1】:

    像这样?

    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")
    

    【讨论】:

    • 谢谢。 1.忘记交易量,价格在两个不同的图表相同的x轴。您为价格创建的相同数据集。 2.有没有不使用ggplot?我将删除帖子中的音量以防止混淆。
    【解决方案2】:

    绘制其中一个时间序列,如上所示,并使用lines(second.obj) 添加第二个时间序列。如果这没有对您进行排序,请发表评论。与上文相呼应,我希望您使用dput(my_data) 进一步编辑您的问题。

    【讨论】:

    • 我不想将两个数据都放在一个图表中,两个不同的图表具有相同的 x 轴,谢谢。
    【解决方案3】:

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

    【讨论】:

    • 两个不同货币对的2个数据集。数据很大,但所有行的格式都和我这里描述的一样。
    • @User3132179 最好作为评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2019-03-10
    • 2015-05-31
    相关资源
    最近更新 更多