6

と XTS に単純な OHLC データがあります

SF <- structure(c(1.064, 1.07, 1.071, 1.08, 1.08, 1.076, 1.078, 1.08,
1.08, 1.082, 1.081, 1.082, 1.074, 1.07, 1.073, 1.075, 1.081,
1.084, 1.092, 1.091, 1.097, 1.095, 1.099, 1.094, 1.096, 1.097,
1.096, 1.096, 1.097, 1.091, 1.078, 1.083, 1.088, 1.084, 1.081,
1.095, 1.096, 1.085, 1.074, 1.075, 1.073, 1.07, 1.068, 1.072,
1.084, 1.08, 1.081, 1.077, 1.081, 1.083, 1.084, 1.083, 1.082,
1.082, 1.075, 1.074, 1.075, 1.092, 1.086, 1.092, 1.093, 1.098,
1.102, 1.103, 1.099, 1.098, 1.1, 1.101, 1.098, 1.098, 1.1, 1.092,
1.084, 1.087, 1.088, 1.084, 1.096, 1.099, 1.097, 1.086, 1.078,
1.076, 1.076, 1.073, 1.064, 1.069, 1.071, 1.077, 1.075, 1.074,
1.078, 1.078, 1.08, 1.079, 1.078, 1.073, 1.068, 1.07, 1.069,
1.074, 1.08, 1.083, 1.089, 1.09, 1.096, 1.094, 1.092, 1.092,
1.094, 1.094, 1.09, 1.092, 1.088, 1.08, 1.076, 1.078, 1.081,
1.079, 1.08, 1.09, 1.084, 1.072, 1.073, 1.069, 1.066, 1.07, 1.067,
1.072, 1.08, 1.079, 1.076, 1.077, 1.08, 1.08, 1.082, 1.081, 1.081,
1.074, 1.072, 1.073, 1.074, 1.081, 1.084, 1.091, 1.092, 1.097,
1.097, 1.099, 1.095, 1.095, 1.097, 1.097, 1.096, 1.094, 1.091,
1.08, 1.083, 1.086, 1.083, 1.082, 1.095, 1.096, 1.086, 1.074,
1.075, 1.073, 1.071, 1.072), .Dim = c(42L, 4L), .Dimnames = list(
NULL, c("Open", "High", "Low", "Close")), index = structure(c(1353427200,
1353513600, 1353600000, 1353859200, 1353945600, 1354032000, 1354118400,
1354204800, 1354464000, 1354550400, 1354636800, 1354723200, 1354809600,
1355068800, 1355155200, 1355241600, 1355328000, 1355414400, 1355673600,
1355760000, 1355846400, 1355932800, 1356019200, 1356278400, 1356451200,
1356537600, 1356624000, 1356883200, 1357056000, 1357142400, 1357228800,
1357488000, 1357574400, 1357660800, 1357747200, 1357833600, 1358092800,
1358179200, 1358265600, 1358352000, 1358438400, 1358697600), tzone = "", tclass = c("POSIXct",
"POSIXt")), .indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct",
"POSIXt"), .indexTZ = "", tzone = "", class = c("xts", "zoo"))

plot.xts(SF, type='candles')

ろうそくは非常に薄く出ています。それらを広くするにはどうすればよいですか?

plot.xts のソース コードを調べると、xts 内部関数 plot.ohlc.candles が呼び出されて、OHLC データがローソク足としてプロットされ、それに ... が渡されることがわかります。H

plot.ohlc.candles(x, bar.col = bar.col, candle.col = candle.col, 
            ...)

ただし、plot.xts 関数呼び出しで引数 width=0.5 を設定しようとすると、幅がグラフィック パラメータではないという警告が表示されます。

Warning messages:
1: In plot.window(...) : "width" is not a graphical parameter
2: In plot.xy(xy, type, ...) : "width" is not a graphical parameter
3: In axis(1, at = xycoords$x, labels = FALSE, col = "#BBBBBB", ...) :
  "width" is not a graphical parameter
4: In axis(1, at = xycoords$x[ep], labels = names(ep), las = 1, lwd = 1,  :
  "width" is not a graphical parameter
5: In axis(2, ...) : "width" is not a graphical parameter
6: In title(width = 0.5) : "width" is not a graphical parameter
There were 12 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: "width" is not a graphical parameter
2: "width" is not a graphical parameter
3: "width" is not a graphical parameter
4: "width" is not a graphical parameter
5: "width" is not a graphical parameter
6: "width" is not a graphical parameter
7: "width" is not a graphical parameter
8: "width" is not a graphical parameter
9: "width" is not a graphical parameter
10: "width" is not a graphical parameter
11: "width" is not a graphical parameter
12: "width" is not a graphical parameter

2 つの異なるプロット (1 つの時系列グラフと他の通常の XY 折れ線グラフ) を並べてプロットしようとしているため、quantmod または xtsExtra を使用できません。

4

4 に答える 4

7

警告は無視できますが、width非常に大きな値を設定する必要があります。を見るとplot.ohlc.candles、 がwidthxts オブジェクトのインデックス (秒単位) に基づいていることがわかります。

R> xts:::plot.ohlc.candles
function (x, width = 0.2, order = 1:4, bar.col = "grey", candle.col = "white", 
    ...) 
{
    segments(.index(x), x[, order[2]], .index(x), x[, order[3]], 
        col = bar.col, ...)
    rect(.index(x) - width, x[, order[1]], .index(x) + width, 
        x[, order[4]], col = candle.col, ...)
}
<environment: namespace:xts>

これにより、幅が 1/4 日に設定されます。

plot.xts(SF, type='candles', width=60*60*24*0.25)

1/4日ろうそくチャート

于 2013-01-21T17:29:55.350 に答える
6

Joshuaが述べたように、正しいチャートを取得するために私がしたことは次のとおりです

candlecolors <- ifelse(SF[,'Close'] > SF[,'Open'], 'RED', 'GREEN')
plot.xts(SF, type='candles',  width=25000, candle.col=candlecolors, bar.col='BLACK')

これにより、次のチャートが得られました。

SF

于 2013-01-21T17:41:23.063 に答える
1

ローソクは単なる線なので、lwdパラメーターを使用して線幅を広げることができます。残念ながら、直接使用するとエラーが発生します。

plot.xts(SF, type='candles',lwd=2)
Error in axis(1, at = xycoords$x[ep], labels = names(ep), las = 1, lwd = 1,  : 
  formal argument "lwd" matched by multiple actual arguments

plot.xtsこれは、ラッパーの動作の問題のようです。

次を使用して設定することで、機能させることができますpar

opar <- par(lwd=2)
plot.xts(SF, type='candles')
par(opar) # reset to original parameters

これはグリッド線とチャートの境界線にも影響しますが。

于 2013-01-21T16:46:07.027 に答える
0

そしてズームパッケージはどうですか?次に、次のような「プロット」コードの最後に zm() を介して必要に応じてズームインおよびズームアウトできます

plot(datax)
lines(datay)
zm()

?

于 2016-11-22T08:21:14.480 に答える