0

我需要绘制一个图表,其中 x 轴是日期,y 轴是相应的股票价格。我的数据框中的日期是数字的。例如 1980-01-01 是 3653。当我绘制数据时,我在 x 轴上得到年份。但是,我想指定哪些年份应该在那里。当我设置我自己的 x 轴时,axis(1, at=c("1980","1985","1990","1995","2000","2005","2010"))我得到一个错误。

我是否必须修改数据或让它工作的诀窍是什么?

这是数据的外观:

    > data2
            date    close   change  color
        1   3653    4.668333    NA  NA
        2   3658    4.699753    3.142007e-02    green
        3   3665    4.710161    1.040780e-02    green
        4   3672    4.732772    2.261090e-02    green
        5   3679    4.745975    1.320353e-02    green
        6   3686    4.770261    2.428574e-02    green
        7   3693    4.748491    -2.176980e-02   red
...

这是我到目前为止所拥有的。您需要tserieszoo打包。

data <- get.hist.quote("^GSPC", start = "1980-01-01", compression="w")
data2 <- data.frame( date = as.Date(index(data)), close = data$Close)
data2$close <- log(data2$close)
plot(data2$date, data2$close, type="h", main="S&P 500", ylab="Log Close", xlab="Date",
     axes=F)
axis(2, at=c("5.0","5.5","6.0","6.5","7.0"))
box(which = "plot") 
4

2 回答 2

0

我认为您需要使用 at=... 参数将刻度放在您想要的位置,以便 1:7 和 1:5,并使用参数 labels=... 来放置年份。

例子:

plot(1:7,c(1:5,5,5),axes=F,xlab="",ylab="")
axis(1,at=1:7, labels=c("1980","1985","1990","1995","2000","2005","2010"))
axis(2,at=1:5)

我希望这将有所帮助。

于 2013-10-09T12:51:19.553 回答
0

与适当的来源一起使用as.Date以将日期转换为"Date"类。例如,

> as.Date(3653, origin = "1969-12-31")
[1] "1980-01-01"

(通常,R 中的原点是“1970-01-01”,因此您可能需要检查您是否偏离了 1。)

无论如何,继续:

data2$Date <- as.Date(data2$date, origin = "1969-12-31")

plot(close ~ Date, data2, type = "o", pch = 20, xaxt = "n")

lab <- seq(1980, 2010, 5) # years
at <- as.Date(paste0(lab, "-01-01"))
axis(1, at, lab)
于 2013-10-09T12:52:11.353 回答