将chartSeries中的图例更改为显示值 - Quantmod addTA

时间:2013-09-08 12:18:50

标签: r quantmod

是否可以更改Quantmod中显示的图表上的图例,以便显示值而不是变量名称?例如:

library("quantmod")
getSymbols("YHOO")
temp1 <- 6
temp2 <- "SMA"
barChart(YHOO)
addTA(ADX(YHOO, n=temp1, maType=temp2))

图中显示的图例为ADX(YHOO, n=temp1, maType=temp2)。我希望它显示特定的值,即ADX(YHOO, n=6, maType='SMA')

2 个答案:

答案 0 :(得分:2)

使用addTA无法自动执行此操作,因为它需要知道需要评估的TA调用的哪些参数。但您可以通过自己设置legend=参数手动完成。

一种方法是使用paste(或paste0)。

barChart(YHOO)
Legend <- paste0('ADX(YHOO, n=',temp1,', maType=',temp2,')')
addTA(ADX(YHOO, n=temp1, maType=temp2), legend=Legend)

或者你可以创建并操纵调用来获得你想要的东西。

barChart(YHOO)
callTA <- call("ADX",quote(YHOO),n=temp1,maType=temp2)
eval(call("addTA", callTA, legend=deparse(callTA)))

答案 1 :(得分:0)

以下是部分解决方案,它显示图例中的值而不是变量名称以及TA的相关输出值。但是,与addTA的默认设置不同,每个输出值的文本与addTA图上的行颜色不匹配。不幸的是,我还没有弄清楚如何使输出值的文本与addTA图上相关行的颜色相匹配。有什么建议吗?

  library("quantmod")
  getSymbols("YHOO")
  barChart(YHOO, subset="last 4 months")
  col <- c("red", "blue", "green", "orange")
  temp1 <- 8
  temp2 <- "SMA"
  temp <- ADX(HLC(YHOO), n=temp1, maType=temp2)
  legend <- rep(NA, NCOL(temp)+1)
  legend[1] <- paste("ADX(HLC(YHOO)", "n=", temp1, "maType=", temp2)
  for(x in 2:(NCOL(temp)+1)){
      legend[x] <- (paste(colnames(temp[,(x-1)]),": ", round(last(temp[,(x-1)]),3), sep=""))
  }
  addTA(temp, legend = legend, col=col)