因为这个问题在许多统计软件环境中都很常见,所以让我们在Cross Validated上讨论它,而不是将它迁移到特定于 R 的论坛(例如 StackOverflow)。
真正的问题是它Date
被视为一个因素——一个离散变量——因此线路没有正确连接。 (在水平方向上也不是完美准确地绘制点。)
为了制作右手图,该Date
字段从一个因子转换为实际日期,每周通过简单的计算确定(打破周六和周日之间的周数),并且通过在周内循环在周末中断行:
oracle$date <- as.Date(oracle$Date)
oracle$week.num <- (as.integer(oracle$date) + 3) %/% 7
oracle$week <- as.Date(oracle$week.num * 7 - 3, as.Date("1970-01-01", "%Y-%m-%d"))
par(mfrow=c(1,2))
plot(as.factor(unclass(oracle$Date[1:120])), oracle$Open[1:120], type="l",
main="Original Plot: Inset", xlab="Factor code")
plot(oracle$date[1:120], oracle$Open[1:120], type="n", ylab="Price",
main="Oracle Opening Prices")
tmp <- by(oracle[1:120,], oracle$week[1:120], function(x) lines(x$date, x$Open, lwd=2))
(相当于每周的日期,给出该周的星期一,也存储在oracle
数据框中,因为它对于绘制每周聚合数据很有用。)
只需模拟最后一行显示所有数据即可达到初衷。为了添加有关季节性行为的一些信息,以下图表在每个日历年中按周改变颜色:
par(mfrow=c(1,1))
colors <- terrain.colors(52)
plot(oracle$date, oracle$Open, type="n", main="Oracle Opening Prices")
tmp <- by(oracle, oracle$week,
function(x) lines(x$date, x$Open, col=colors[x$week.num %% 52 + 1]))