我试图将6天的日内数据绘制为6个图表.Quantmod的实验chart_Series()函数与par()设置一起使用.我已经将数据预加载到bars(XTS对象的向量)中,所以我的代码如下所示:
par(mfrow=c(3,2)) #3 rows, 2 columns
for(d in bars){
print(chart_Series(d, type = "candlesticks") )
}
Run Code Online (Sandbox Code Playgroud)
这有效,但每个图表都有自己不同的y轴刻度.我想设置一个覆盖所有6天的y范围,但找不到办法.我试过这个:
ylim=c(18000,20000)
print(chart_Series(d, type = "candlesticks",ylim=ylim) )
Run Code Online (Sandbox Code Playgroud)
但它失败了"未使用的参数"错误.yrange = ylim也失败了.
我可以使用chartSeries(d,yrange = ylim),它可以工作.但据我所知,我不能在一个显示器中放置多个图表(?).(它可能完全是偏离主题的,但是对于可以绘制漂亮的烛台图表,允许y轴控制并且可以在一个图像上绘制多个图表的替代R包的建议也将非常受欢迎.)
使用chartSeries,您可以将layout参数设置NULL为阻止layout()命令被调用:这是禁用该mfrow设置的内容.
library(quantmod)
getSymbols("AA")
op <- par(mfrow=c(3,2))
for(i in 1:6) {
chartSeries(
AA["2011-01"], "candlesticks",
TA=NULL, # No volume plot
layout=NULL,
yrange=c(15,18)
)
}
par(op)
Run Code Online (Sandbox Code Playgroud)
如果你想保持音量,你可以调用layout而不是设置mfrow:它基本上是相同的,但允许你有不同大小的图并选择它们的绘制顺序.
layout( matrix( c(
1, 3,
2, 4,
5, 7,
6, 8,
9, 11,
10, 12
), nc=2, byrow=TRUE),
heights = rep( c(2,1), 3 )
)
#layout.show(12) # To check that the order is as desired
for(i in 1:6) {
chartSeries(
AA[sprintf("2011-%02d",i)],
"candlesticks", layout=NULL, yrange=c(15,19)
)
}
Run Code Online (Sandbox Code Playgroud)