2017-10-27 4 views
4

chartSeriesを使用する場合、デフォルトではプロットの左上に最後の値も表示されます。それができないようにする方法はありますか?R:quantmodのchartSeriesとAddTAに最後の値を表示しないようにする

addTAで新しいTAを追加するときは、引数legend = ""を設定することによってプロットの最後の値を避けることができますが、これはTAの新しいプロットを作成する場合に限ります。 TAが以前にプロットされたグラフィック上にある場合、凡例引数に何を入れても、最後の値が表示されます。

getSymbols ("AAPL", src = "google") 
chartSeries(AAPL) 

プロットの最後の値が印刷されないようにするには、ここで何が使えますか?

addTA(EMA(Cl(AAPL)), on = 1, legend = "") 

これでも、最後の値がプロットの左上に印刷されます。奇妙な部分は、あなたがこのような新しいプロット上にプロットしている場合、それはそれをしないということである。

addTA(EMA(Cl(AAPL)), legend = "") 

は、それはデフォルトではこのようなものですか、私はそれを回避するために行うことができるものはありますか?

答えて

4

デフォルトで最後の値が表示されます(はい、うんざりです)。 addTAに表示されている最後の番号を削除するには、ソースコードを変更する必要があります。

私は、彼らが(quantmodための第二世代チャート)はるかに良いように見えると思うので、私は、addTAを使用するのではなく、add_TAchart_Seriesません。 add_TAバージョンの最後の番号が表示されなくなります。しかし、ソースコードを変更しても構わないと思います。

add_TAで

、あなたがラインに約ソースの56-60を変更する必要があります:

これである、text.expを置き換えます。これらの修飾を有する

# this is inside add_TA: 
if (is.na(on)) { 
    plot_object$add_frame(ylim = c(0, 1), asp = 0.15) 
    plot_object$next_frame() 
    text.exp <- expression(text(x = c(1, 1 + strwidth(name)), 
           y = 0.3, labels = c(name, round(last(xdata[xsubset]), 
                   5)), col = c(1, col), adj = c(0, 0), cex = 0.9, 
           offset = 0, pos = 4)) 
    plot_object$add(text.exp, env = c(lenv, plot_object$Env), 

if (is.na(on)) { 
    plot_object$add_frame(ylim = c(0, 1), asp = 0.15) 
    plot_object$next_frame() 
    text.exp <- expression(text(x = c(strwidth(name)), # <- affects label on the subchart 
          y = 0.3, labels = name, col = c(col), adj = c(0), cex = 0.9, 
          offset = 1, pos = 4)) 
    plot_object$add(text.exp, env = c(lenv, plot_object$Env), 
       expr = TRUE) 

... この変更されたコードを、新しい変数、say add_TA.mine

add_TA.mine <- function (x, order = NULL, on = NA, legend = "auto", yaxis = list(NULL, 
                    NULL), col = 1, taType = NULL, ...) 
{ 
    lenv <- new.env() 
    lenv$name <- deparse(substitute(x)) 
    lenv$plot_ta <- function(x, ta, on, taType, col = col, ...) { 
    xdata <- x$Env$xdata 
    .... 
    [all the code for the rest of the function with modifications].... 

      } 
    } 
    plot_object 
} 

、ちょうどあなたが最後の値がもはや印刷されて見ることができない変更機能

library(quantmod) 
getSymbols("AAPL") 

environment(add_TA.mine) <- environment(get("add_TA", envir = asNamespace("quantmod"))) 
assignInNamespace(x = "add_TA", value = add_TA.mine, ns = "quantmod") 


chart_Series(AAPL, subset = "2017") 
add_TA(RSI(Cl(AAPL))) 
quantmod:::add_TA(RSI(Cl(AAPL))) 

でコードを実行します。

enter image description here

を(あなたが同じ種類を作ることができます古いaddTAコードの変更点(おそらく古いプロットに固執したい場合はchartSeries経由)

変更に満足しており、add_TAに変更したい場合は、quantmodソースコードを自分で修正してください。 quantmodソースコードをダウンロードしてパッケージを再コンパイルする必要があります)。あなたが何かを混乱させるなら、元のquandmodのソースコードを再びダウンロードすることができます。

+0

ありがとうございましたが、最後にソースコードを変更する必要はありませんでした。今のところ、2世代のグラフadd_TAは、以前にプロットされたデータの下に新しいチャートを作成するときに最後の値を表示しますが、既存のグラフの1つにTAを追加するときは、少なくとも行いませんon =引数を使用します。多くの表記法や参照(通常はxtsプロット)を追加する傾向があるため、chartSeriesがグラフに追加したすべての表記やインジケータの最後の値を画面に表示しないようにする必要がありました。この第2世代チャートを知るだけで多くのことができます。ありがとう – user8844984

関連する問題