【发布时间】:2014-04-15 17:52:22
【问题描述】:
这是一个高级问题。
我对 chartSeries quantmod 函数使用自己的布局,甚至可以创建自己的 newTA。一切正常。但是……
我想做却做不到的事情:
a) 操作 3 个图表中每一个的图例: - 移动到其他角落,(从“topleft”到“topright”) - 改变内容 - 如果需要,完全删除...
b) 我的指标生成 2 个图例: 价值1 价值2 和上面一样......我怎么能修改它们?我怎样才能删除它们?
c) 控制y轴的位置和范围(放在左/右 甚至删除它们 当图上有第二轴时也一样
d) 修改主要图例(右上角的那个) 日期范围写在哪里
一个工作示例代码:
# Load Library
library(quantmod)
# Get Data
getSymbols("SPY", src="yahoo", from = "2010-01-01")
# Create my indicator (30 values)
value1 <- rnorm(30, mean = 50, sd = 25)
value2 <- rnorm(30, mean = 50, sd = 25)
# merge with the first 30 rows of SPY
dataset <- merge(first(SPY, n = 30),
value1,
value2)
# **** data has now 8 columns:
# - Open
# - High
# - Low
# - Close
# - Volume
# - Adjusted
# - a (my indicator value 1)
# - b (my indicator value 2)
#
# create my TA function - This could also be achieve using the preFUN option of newTA
myTAfun <- function(a){
# input: a: function will receive whole dataset
a[,7:8] # just return my indicator values
}
# create my indicator to add to chartSeries
newMyTA <- newTA(FUN = myTAfun, # chartSeries will pass whole dataset,
# I just want to process the last 2 columns
lty = c("solid", "dotted"),
legend.name = "My_TA",
col = c("red", "blue")
)
# define my layout
layout(matrix(c(1, 2, 3), 3, 1),
heights = c(2.5, 1, 1.5)
)
# create the chart
chartSeries(dataset,
type = "candlesticks",
main = "",
show.grid = FALSE,
name = "My_Indicator_Name",
layout = NULL, # bypass internal layout
up.col = "blue",
dn.col = "red",
TA = c(newMyTA(),
addVo()
),
plot = TRUE,
theme = chartTheme("wsj")
)
我尝试过使用 legend 命令以及选项 legend.name(对输出的控制非常有限)。 我已经查看了 chartSeries 返回的 chob 对象,但我不知道下一步该做什么......
下图:
【问题讨论】:
-
@JoshuaUlrich Quant.SE 已删除。不同的论坛覆盖了不同的用户群,因此我试图最大限度地提高获得回复的机会。
-
我能理解;但是提及您已交叉发布是有礼貌的,因此一个论坛中的人们不会花时间回答已在另一个论坛中回答的问题。
-
这真的与Highcharts有关吗? Legend(s?) 看起来不像 Highcharts 之一。无论如何,您无法实时删除图例。但是在 Highcharts 中,您可以使用
yAxis.setExtremes(min, max)更改 yAxis 上的范围。不幸的是,我不知道如何在 quantmod 中更改它.. -
@PawełFus 删除了 Highcharts 和图例标签。无论如何,我认为这个问题最终会成为深入研究 R 内部结构的邀请......这需要我一段时间,但我会弄清楚的。