R:获取quantmod';s chartSeries和AddTA不显示最后一个值

R:获取quantmod';s chartSeries和AddTA不显示最后一个值,r,charts,quantmod,R,Charts,Quantmod,使用chartSeries时,默认情况下,它还会在绘图的左上角显示最后一个值。有没有办法阻止它这样做 使用addTA添加新TA时,可以通过设置参数legend=“”)来避免绘图上的最后一个值,但前提是要为TA创建新绘图。如果TA位于先前打印的图形上,则无论您在图例参数中输入了什么,它都将显示最后一个值 getSymbols ("AAPL", src = "google") chartSeries(AAPL) 我可以在这里使用什么来防止它在绘图上打印最后一个值 addTA(EMA(Cl(AAPL

使用chartSeries时,默认情况下,它还会在绘图的左上角显示最后一个值。有没有办法阻止它这样做

使用addTA添加新TA时,可以通过设置参数legend=“”)来避免绘图上的最后一个值,但前提是要为TA创建新绘图。如果TA位于先前打印的图形上,则无论您在图例参数中输入了什么,它都将显示最后一个值

getSymbols ("AAPL", src = "google")
chartSeries(AAPL)
我可以在这里使用什么来防止它在绘图上打印最后一个值

addTA(EMA(Cl(AAPL)), on = 1, legend = "")
这仍然会打印绘图左上角的最后一个值。奇怪的是,如果你在这样一个新的绘图上绘图,它不会这样做:

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

默认情况下是这样的,还是我可以做些什么来绕过它?

默认显示最后一个值(是的,令人烦恼)。您可能需要修改源代码以删除
addTA
中显示的最后一个数字

我不使用
addTA
,而是使用
addTA
chart\u系列
,因为我认为它们看起来更好(第二代quantmod图表)。这里有一个解决方案,可以删除
add\u 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), 
现在,只需使用修改后的函数运行代码

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)))
库(quantmod)
getSymbols(“AAPL”)

环境(add_TA.mine)谢谢,但最终不需要修改源代码。现在的工作方式是,尽管第二代图表add_TA在先前绘制的数据下方创建新图表时会打印最后一个值,但至少在使用on=参数将TA添加到一个预先存在的图表时不会打印最后一个值。由于我倾向于添加大量的符号和引用(通常在xts图中),因此我需要一种方法,使chartSeries不会在屏幕上填充我添加到图表中的每个符号或指示器的最后值。了解这第二代图表会有很大帮助。谢谢
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)))