R/quantmod:多个图表都使用相同的 y 轴 [英] R/quantmod: multiple charts all using the same y-axis
问题描述
我正在尝试将 6 天的日内数据绘制为 6 个图表.Quantmod 的实验 chart_Series() 函数适用于 par() 设置.我已将数据预加载到 bars
(XTS 对象的向量)中,因此我的代码如下所示:
I'm trying to plot 6 days of intraday data as 6 charts. Quantmod's experimental chart_Series() function works with par() settings. I've pre-loaded the data into bars
(a vector of XTS objects) so my code looks like this:
par(mfrow=c(3,2)) #3 rows, 2 columns
for(d in bars){
print(chart_Series(d, type = "candlesticks") )
}
这可行,但每个图表都有自己不同的 y 轴刻度.我想设置一个涵盖所有 6 天的 y 范围,但找不到办法做到这一点.我试过这个:
This works, but each chart has its own different y-axis scale. I wanted to set a y-range that covers all 6 days, but cannot find a way to do this. I tried this:
ylim=c(18000,20000)
print(chart_Series(d, type = "candlesticks",ylim=ylim) )
但它因未使用的参数"错误而失败.yrange=ylim 也失败了.
but it fails with the "unused argument(s)" error. yrange=ylim also fails.
我可以使用 chartSeries(d,yrange=ylim),而且它有效.但据我所知,我不能在一个显示器中放置多个图表(?).(严格来说,这可能是题外话,但对于可以绘制漂亮烛台图、允许 y 轴控制以及可以在一张图像上绘制多个图表的替代 R 包的建议也非常受欢迎.)
I can use chartSeries(d,yrange=ylim), and it works. But as far as I know I cannot put multiple charts in one display (?). (It might strictly be off-subject, but suggestions for alternative R packages that can draw nice-looking candlestick charts, allow y-axis control and can draw multiple charts on one image would also be very welcome.)
推荐答案
使用 chartSeries
,您可以将 layout
参数设置为 NULL
以防止 layout()
命令被调用:这就是禁用 mfrow
设置的原因.
With chartSeries
, you can set the layout
argument to NULL
to prevent the layout()
command from being called: this is what disables the mfrow
setting.
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)
如果你想保持音量,你可以调用layout
而不是设置mfrow
:它的作用基本相同,但允许你有不同大小的图并选择它们的绘制顺序.
If you want to keep the volume, you can call layout
instead of setting mfrow
: it does basically the same thing, but allows you to have plots of different sizes and choose the order in which they are plotted.
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)
)
}
这篇关于R/quantmod:多个图表都使用相同的 y 轴的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!