簡體   English   中英

使用 plot.ts() 的時間序列的日期轉換問題

[英]Date conversion issue for time series using plot.ts()

我有一個 dataframe 日期為yyyy-mm-dd格式和股價,但在使用plot.ts()繪制時,我無法在 x 軸上看到日期。 我嘗試了下面提到的一些替代方案,但它們不起作用。

在此處輸入圖像描述

我使用轉換日期

  1. data$Date<-as.Date(data$Date, "%Y-%m-%d")
  2. data$Date<-ymd(data$Date)使用潤滑 package

然后做了

bby <- ts(data=data$Share_price, frequency=2, start=c(data[1,"Date"]))
plot.ts(bby))

這是不成功的。

我也試過

bby <- ts(data=data$Share_price, frequency=2,
     start=as.Date("2017-10-05"), end=as.Date("2019-10-04"))`

然后plot.ts(bby)

但它又沒有用。 我總是得到下圖:

在此處輸入圖像描述

謝謝你的幫助。

ts 設置有點笨拙,而且它的情節並不總是最友好的。 您可以按如下方式設置數據。 請注意,您需要以一種相當痛苦的方式為下面的時間序列 object 指定“開始”,然后(因為它只接受固定的時間間隔)您失去了原始系列中的天間隔:

z <- seq.Date(as.Date('2017-10-05'), by = 1, length.out = 8)
data <- data.frame(Date = z[-(3:4)],
                   Share_price = c(1708.84, 1718.40, 1724.14, 1762.39, 1766.21, 1813.07))
myts <- ts(data$Share_price,
           start = c(2017, as.numeric(format(data$Date[1], "%j"))),
           frequency = 365)
plot(myts)

ts 對象的繪圖

x 軸現在具有 2017 年的小數偏移量。

也許 xts package 在這里更好? 它可以處理不規則的時間索引。

library(xts)
myxts <- xts(data$Share_price, data$Date)
plot(myxts)

在此處輸入圖像描述

請參閱 plot.xts() 文檔,了解用於美化您的圖表的各種花里胡哨。

通常 ts class 用於每月、每季度或每年的數據,但不用於每日數據。

假設DF具有按照末尾注釋中所示的可重現形式的日期和數字列,則轉換為 zoo class。 然后我們可以很容易地使用經典圖形 plot,ggplot2 或點陣圖形。

library(zoo)
z <- read.zoo(DF)

plot(z, main = "classic")

library(ggplot2)
autoplot(z) + 

library(lattice)
xyplot(z)

使用cowplot將所有三個一起繪制

library(gridGraphics)
library(cowplot)

plot(z)
p1 <- recordPlot()

library(ggplot2)
p2 <- autoplot(z)

library(lattice)
p3 <- xyplot(z)

plot_grid(p1, p2, p3, labels = c("classic", "ggplot2", "lattice"), nrow = 1)

給予:

截屏

筆記

DF <- structure(list(Date = structure(c(17444L, 17445L, 17448L, 17449L, 
17450L, 17451L), class = "Date"), Share_price = c(1708.84, 1718.4, 
1724.14, 1762.39, 1766.21, 1813.07)), class = "data.frame", row.names = c(NA, 
-6L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM