《R的极客理想—工具篇》—— 2.3 时间序列可视化plot.xts
本节书摘来自华章出版社《R的极客理想—工具篇》一 书中的第2章,第2.2节,作者:张丹,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.3 时间序列可视化plot.xts问题
如何把时间序列可视化?
引言
r-bloggers的一篇博文:plot.xts is wonderful!,让我有动力继续发现xts的强大。xts扩展了zoo的基础数据结构,并提供了更丰富的功能函数。xtsExtra补充库从可视化的角度出发,提供了一个简单而效果非凡的作图函数plot.xts。本节将用plot.xts来演示xts对象的时间序列可视化!
xtsExtra是xts包的功能补充包,该软件包在Google Summer of Code 2012发布,最终将合并到xts包,不过在笔者写这本书的时候还没有合并。xtsExtra提供的主要功能就是plot.xts()函数。xts::plot.xts()函数与xtsExtra::plot.xts()函数还是有差别的,下面我们就详细介绍其中的差别!
2.3.2 xtsExtra安装本节使用的系统环境是:
Win7 64bit
R: 3.0.1 x86_64-w64-mingw32/x64 b4bit
注 xtsExtra同时支持Windows 7环境和Linux环境。
由于xtsExtra没有发布到CRAN,我们要从R-Forge下载。
~ R # 启动R程序 install.packages("xtsExtra", repos="http://R-Forge.R-project.org") # 从R-Forge下载xtsExtra包 library(xtsExtra) # 加载xtsExtra包 xtsExtra::plot.xts()函数覆盖了xts::plot.xts()函数。2.3.3 xtsExtra包的使用
plot.xts()函数的参数列表如下:
names(formals(plot.xts)) [1] "x" "y" "screens" "layout.screens" "..." [6] "yax.loc" "auto.grid" "major.ticks" "minor.ticks" "major.format" [11] "bar.col.up" "bar.col.dn" "candle.col" "xy.labels" "xy.lines" [16] "ylim" "panel" "auto.legend" "legend.names" "legend.loc" [21] "legend.pars" "events" "blocks" "nc" "nr"
下面画一个简单的时间序列图,如图2-10所示。
data(sample_matrix) sample_xts - as.xts(sample_matrix) plot(sample_xts[,1]) class(sample_xts[,1]) [1] "xts" "zoo"
从图2-10似乎看不出xtsExtra::plot.xts()函数与xts::plot.xts()函数的不同效果。接下来,我们画点稍微复杂的图形。
画K线图下面就来画K线图,默认红白配色,如图2-11所示。
plot(sample_xts[1:30, ], type = "candles")
画K线图:自定义颜色,如图2-12所示。
plot(sample_xts[1:30, ], type = "candles", bar.col.up = "blue", bar.col.dn = "violet", candle.col = "green4")对panel配置
画基本面板,如图2-13所示。
plot(sample_xts[,1:2])
画多行面板,如图2-14所示。
plot(sample_xts[,rep(1:4, each = 3)])
画自由组合面板,如图2-15所示。
plot(sample_xts[,1:4], layout.screens = matrix(c(1,1,1,1,2,3,4,4),ncol = 2, byrow = TRUE))
通过画K线图和面板,就能发现plot.xts()函数提供很多种的画图参数设置,让我们画时间序列图可以有更丰富的可视化表示表现形式。
对screens配置画双屏幕显示,每屏幕2条线,如图2-16所示。
plot(sample_xts, screens = 1:2)
画双屏幕显示,指定曲线出现的屏幕和颜色,如图2-17所示。
plot(sample_xts, screens = c(1,2,1,2), col = c(1,3,2,2))
画双屏幕显示,指定不同的坐标系,如图2-18所示。
plot(10^sample_xts, screens = 1:2, log= c("","y"))
画双屏幕显示,指定不同的输出图形,如图2-19所示。
plot(sample_xts[1:75,1:2] - 50.5, type = c("l","h"), lwd = c(1,2))
画多屏幕,并分组显示,如图2-20所示。
plot(sample_xts[,c(1:4, 3:4)], layout = matrix(c(1,1,1,1,2,2,3,4,5,6), ncol = 2, byrow = TRUE), yax.loc = "left")
画基本事件分割线,如图2-21所示。
plot(sample_xts[,1], events = list(time = c("2007-03-15","2007-05-01"), label = "bad days"), blocks = list(start.time = c("2007-03-05", "2007-04-15"), end. time = c("2007-03-20","2007-05-30"), col = c("lightblue1", "lightgreen")))
画双坐标视图,如图2-22所示。
plot(sample_xts[,1],sample_xts[,2])
画双坐标梯度视图,如图2-23所示。
cr - colorRampPalette(c("#00FF00","#FF0000")) plot(sample_xts[,1],sample_xts[,2], xy.labels = FALSE, xy.lines = TRUE, col = cr(NROW(sample_xts)), type = "l")
以ts数据类型作图,如图2-24所示。
tser - ts(cumsum(rnorm(50, 0.05, 0.15)), start = 2007, frequency = 12) class(tser) [1] "ts" plot(tser)
以xts类型作图,自动增加了背景坐标线,如图2-25所示。
plot.xts(tser)
barplot()函数作条形图,如图2-26所示。
x - xts(matrix(abs(rnorm(72)), ncol = 6), Sys.Date() + 1:12) colnames(x) - LETTERS[1:6] barplot(x)
我们看到xtsExtra::plot.xts()函数提供了强大的作图功能,很容易做出包含丰富元素的时间序列!
数据可视化—随机漫步 为模拟随机漫步,我们将创建一个RandomWalk类,随机选择前进方向,这个类有三个属性,一个存储随机漫步的次数,另外两个存储随机漫步的每个点的x,y坐标,每次漫步都从点(0,0)出发
Python数据分析系列06-柱状图可视化分析数据 现在有很多小年青,不想吃读书的苦,总觉得读书是一件苦差事,有做不完的作业,有考不完的试,总想着何时能逃离校园,总想着怎样走上社会,总觉得社会的生活多姿多彩,总以为一踏入社会,就能享受到自己想要的生活。 要知道没有一定的背景,想要的生活哪有那么容易得到,很多孩子踏入社会以后,经过社会生活的洗礼后,都无比怀念在学校读书的日子。
Python数据分析系列05-绘制地图可视化分析数据 生活中,无论是谁,都可能遇到人生低谷的时光,或是前路迷茫,或是被命运的洪流击败。 过分患得患失,往往得不偿失。比失败更可怕的是,被失败打败。 有的人遇到挫折后,担心再次失败,而瞻前顾后。 结果,越害怕失败,就越不敢前行,心绪越紧张,就越无法改变现状。 从而,让自己陷入“持续低迷、心力交瘁”的死循环中,无法自拔。
相关文章
- BZOJ1290 : [Ctsc2009]序列变换
- Google Earth Engine——给影像添加一个属性对于单景的时间序列并返回影像
- Google Earth Engine(GEE)——基于MODIS影像的海上漏油时间序列趋势分析(15000字长文)
- Google Earth Engine ——用户界面应用UI LandTrendr 像素时间序列绘图仪
- 多普勒补偿问题,对于多个散射中心的目标,M序列
- 数仓工具—Hive实战之事件序列匹配/复杂事件处理(17)
- R语言数据挖掘2.1.1.2 频繁子序列
- 和大于m的最短子序列、数值的整数次方、股票最大利润
- 剑指offer解法汇总73- 翻转单词序列
- Tensorflow2.0入门与实战学习笔记(七)--tf.keras序列问题
- 华为OD机试 - 非严格递增连续数字序列(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 【校招Verilog进阶挑战】序列检测篇:VL4、输入序列不连续的序列检测(体会:拼接晚数据一拍)
- [LeetCode] Arithmetic Slices II - Subsequence 算数切片之二 - 子序列
- leetcode 1143. Longest Commom Subsequence 最长公共子序列(中等)