7

6 日間の日中データを 6 つのグラフとしてプロットしようとしています。Quantmod の実験的な chart_Series() 関数は、par() 設定で動作します。データを (XTS オブジェクトのベクトル) にプリロードしたbarsので、コードは次のようになります。

par(mfrow=c(3,2))   #3 rows, 2 columns

for(d in bars){
    print(chart_Series(d, type = "candlesticks") )
    }

これは機能しますが、各グラフには独自の異なる y 軸スケールがあります。6 日間すべてをカバーする y 範囲を設定したかったのですが、これを行う方法が見つかりません。私はこれを試しました:

ylim=c(18000,20000)
print(chart_Series(d, type = "candlesticks",ylim=ylim) )

しかし、「未使用の引数」エラーで失敗します。yrange=ylim も失敗します。

chartSeries(d,yrange=ylim) を使用できますが、機能します。しかし、私の知る限り、複数のチャートを 1 つのディスプレイに表示することはできません (?)。(厳密には対象外かもしれませんが、見栄えの良いローソク足チャートを描画でき、y 軸の制御が可能で、1 つの画像に複数のチャートを描画できる代替 R パッケージの提案も大歓迎です。)

4

2 に答える 2

8

では、引数をにchartSeries設定して、コマンドが呼び出されないようにすることができます。これにより、設定が無効になります。layoutNULLlayout()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)

ボリュームを維持したい場合は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) 
  )
}
于 2012-01-11T08:10:16.713 に答える
2

ヴィンセントの答えを理解するためにグーグルで調べたところ、layout() コマンドにたどり着きました。par(mfrow) と互換性がないように見えますが、さらに実験を行った結果、代替として使用できることがわかりました。

ylim=c(18000,20000)
layout(matrix(1:12,nrow=6,ncol=2), height=c(4,2,4,2,4,2))
for(d in bars){
    chartSeries(d,layout=NULL,TA=c(addVo(),addBBands()),yrange=ylim)
    }

(オーバーレイも機能することを確認するために、ボリンジャー バンドも追加したことに気付くでしょう。)

于 2012-01-12T03:34:27.900 に答える