牛人张丹使用ggplot2包编程实现的上图,我目前还没有系统学习ggplot2的语法和用法,于是,我想能否用polygon画阴影的方法简单实现我的目标呢?我尝试了一下,发现polygon似乎不支持时间序列。我在百度上搜索,中文网站上没有查到相关的解决办法,于是我改用bing搜索,在两个国外网站上发现了类似的问题,并且对应的解决办法。
总的来说,polygon确实不直接支持时间序列,解决方法主要是将时间序列变为一般向量,然后先用plot画图,再用polygon画阴影,再将x轴的坐标画上,我结合他们的代码和我的要求,示范代码如下:
- library(quantmod)
- getSymbols("^GSPC")
- x<-Cl(GSPC) # 将收盘价提取出来
- vx<-as.vector(x) # 再向量化一份
- begin <- which(index(x)=="2010-01-20") #开始时间
- end <- which(index(x)=="2012-08-20") #结束时间
- # 以下作图
- plot(as.vector(x),type = "l", xaxt="n") #这里注意xaxt参数,作用是不画x轴标签
- polygon(c(begin,begin:end,end), c(0,vx[begin:end],0),col = "red")
- axis(1,at = seq(1,length(vx),length.out = 12), labels = index(x)[seq(1,length(vx),length.out = 12)]) #补画x轴坐标
我个人更喜欢这种简单清爽的图,更加能够便于自己观察。
我用这种方法研究A股的实际效果如下:


雷达卡





京公网安备 11010802022788号







