我需要绘制一个图表,其中x轴是日期,y轴是相应的股票价格。我的数据框中的日期是数字。例如,1980-01-01是3653.当我绘制数据时,我在x轴上获得了多年。但是,我想说明应该在哪些年份。当我通过axis(1, at=c("1980","1985","1990","1995","2000","2005","2010"))
设置我自己的x轴时,我收到一个错误。
我是否必须修改数据或使其工作的技巧是什么?
这是数据的外观:
> 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
...
这是我到目前为止所拥有的。您需要tseries
和zoo
个包。
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")
答案 0 :(得分:0)
我认为你需要在1:7和1:5之间放置at = ...参数,并使用参数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)
我希望这会有所帮助。
答案 1 :(得分:0)
使用具有相应来源的as.Date
将日期转换为"Date"
课程。例如,
> as.Date(3653, origin = "1969-12-31")
[1] "1980-01-01"
(通常R中的原点是“1970-01-01”,所以你可能想检查一下你是不是。)
无论如何,继续:
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)