@yutannihilation
2015/2/21, Tokyo.R 46
とかでRを使います。(でもほぼ趣味)
統計のことあんまり分かりません。。
巷で流行っているというラズパイとか。
BowerはJavascriptのパッケージマネージャ。
※この辺の考慮はjsonliteになれば不要かも
[
{x: 1, y: 2, value: 100, lable: "A"},
{x: 3, y: 9, value: 0, lable: "B"},
{x: 3, y: 3, value: 999, lable: "C"},
...
]
→ HTMLWidgets.dataframeToD3()を使いましょう。
[
[1147651200000,376.20],
[1147737600000,371.30],
[1147824000000,374.50],
[1147910400000,370.99],
[1147996800000,370.02],
...
]
render()を呼び出す…
$('#foo').highcharts('StockChart', {
series : [
{name : 'GOOG', data : data1},
{name : '^GSPC', data : data2}
]
});
.highcharts()を呼ぶだけやればおk
New project > New Directory > R package
devtools::create("mywidget")
setwd("mywidget")
htmlwidgets::scaffoldWidget("ウィジェット名", bowerPkg = "bowerでのパッケージ名")
以下のファイルができる
※ウィジェット名がパッケージ名と同じだと「ウィジェット名.R」と「パッケージ名.R」が衝突する。
bowerは、inst/htmlwidgets/lib/以下にレポジトリ丸ごと取ってきてしまう。
→ 関数名.yamlに書いてあるファイルさえあればいい。残りは消した方がパッケージが軽量に。
[
[1147651200000,376.20],
[1147737600000,371.30],
[1147824000000,374.50],
[1147910400000,370.99],
[1147996800000,370.02],
...
]
matrixならそのまま渡せばいいlibrary(dplyr)
data <- RFinanceJ::rfj("USDJPY=X") %>%
transmute(Date = as.numeric(Date) * 3600 * 24 * 1000, Close) %>%
arrange(Date) %>% # データは昇順に整列
as.matrix
# オブジェクトではなく配列に変換するためcolnameを消す
colnames(data) <- NULL
とりあえずrenderValue()があれば動く。
renderValue: function(el, x, instance) {
$('#' + el.id)
.highcharts('StockChart', {
series : [
{name : x.name, data : x.data}
]
});
}
# forward options using x
x = list(
data = data,
name = name
)
# create widget
htmlwidgets::createWidget(
name = 'highstock',
x,
width = width,
height = height,
package = 'highstockR'
)
Shinyapps.ioで使うときとかは、この一行がないとパッケージのインストールに失敗する。
Imports: htmlwidgets
highstockR::highstock(as.matrix(data), name = "USDJPY=X")
function(interval = 1, offset = 0) {
htmlwidgets::JS(
sprintf("function(value, index) {return (index - %d) %% %d === 0 ? %s : null;}", offset, interval)
)
}
D3.jsがUTF-8の変数名を使っていて、knitすると文字化けする(最新版pandocでは改善済み)
before:
after:
→ d3.min.jsを使うと安全
参考:htmlwidgetsでD3.jsを使おうとしたら文字コードの闇に飲まれかけた話 - Technically, technophobic.
(ネタ切れです)
https://github.com/yutannihilation/highstockR
library(devtools)
install_github("yutannihilation/highstockR")