charts.PerformanceSummary()
を使用してインタラクティブなバージョンを作成したいと思いますrCharts
。
これはこれまでのところ私の試みです...しかし、すべてをまとめるのに苦労しています....
# Load xts and PerformanceAnalytics package
require(xts)
require(PerformanceAnalytics)
# Generate rtns data
set.seed(123)
X.stock.rtns <- xts(rnorm(1000,0.00001,0.0003), Sys.Date()-(1000:1))
Y.stock.rtns <- xts(rnorm(1000,0.00003,0.0004), Sys.Date()-(1000:1))
Z.stock.rtns <- xts(rnorm(1000,0.00005,0.0005), Sys.Date()-(1000:1))
rtn.obj <- merge(X.stock.rtns , Y.stock.rtns, Z.stock.rtns)
colnames(rtn.obj) <- c("x.stock.rtns","y.stock.rtns","z.stock.rtns")
# The below output is what we are aiming for
charts.PerformanceSummary(rtn.obj,lwd=1,main="Performance of stocks x,y and z")
# So this is what I have tried to do to replicate the data and try and generate graphs
# custom function to convert xts to data.frame
xts.2.df <- function(xts.obj){
df <- ggplot2:::fortify(xts.obj)
df[,1] <- as.character(df[,1])
df
}
# calculating the data for the top and bottom graph
cum.rtn <- do.call(merge,lapply(seq(ncol(rtn.obj)),function(y){cumprod(rtn.obj[,y]+1)-1}))
dd.rtn <- do.call(merge,lapply(seq(ncol(rtn.obj)),function(y){Drawdowns(rtn.obj[,y])}))
# Loading rCharts package
require(devtools)
install_github('rCharts', 'ramnathv',ref='dev')
require(rCharts)
# creating the first cumulative return graph
m1 <- mPlot(x = "Index", y = c("x.stock.rtns","y.stock.rtns","z.stock.rtns"), type = "Line", data = xts.2.df(cum.rtn),
pointSize = 0, lineWidth = 1)
# Top cumulative return graph
m1
# Creating the individual bar graphs that are to be shown when one line is hovered over
m.x <- mPlot(x = "Index", y = c("x.stock.rtns"), type="Bar",data = xts.2.df(rtn.obj))
m.y <- mPlot(x = "Index", y = c("y.stock.rtns"), type="Bar",data = xts.2.df(rtn.obj))
m.z <- mPlot(x = "Index", y = c("z.stock.rtns"), type="Bar",data = xts.2.df(rtn.obj))
# Creating the drawdown graph
m2 <- mPlot(x = "Index", y = c("x.stock.rtns","y.stock.rtns","z.stock.rtns"), type = "Line", data = xts.2.df(dd.rtn),
pointSize = 0, lineWidth = 1)
m2
したがって、質問にはいくつかの部分があります。
- 3 つの morris.js チャートをリンクするためにどのように組み合わせますか?
- 一番上のグラフ( )でホバーしている線を太字にしてもらえます
m1
か? - ホバーされたものに応じて中央のもの (つまり
m.x
、m.y
、の 1 つ) を変更するにはどうすればよいですか。つまり、株式 z にカーソルを合わせると、株式 z のリターン ( ) が中央に表示されますか?m.z
m.z
- 上のグラフで太字にされているのと同じアセットを、下のグラフで太字にすることはできますか?
- フローティング ボックスに表示されている情報を変更して、ホバーしているアセットに関する統計を表示することはできますか?
- 軸ラベルを追加するにはどうすればよいですか?
- 全体的なタイトルをどのように追加しますか?
- ボーナス:
crossfilter.js
時間のサブセットを選択してすべてのグラフを再描画できるようにするには、どのように統合しますか?
すべての部分に回答できない場合でも、ヘルプ/コメント/回答をいただければ幸いです...