此示例显示了如何使用javascript向rPlot添加工具提示:rPlot tooltip problems 此示例显示了如何将click事件添加到hPlot(highcharts): https://github.com/ramnathv/rCharts/blob/master/inst/libraries/highcharts/examples.R
我想让rPlot像hPlot一样执行类似的on.click事件,但是无法找到使用rPlot / polycharts分配它的正确方法。
Polychart示例(成功应用工具提示):
require(rCharts)
set.seed(1)
test1 <- data.frame(x = rnorm(100), y = rnorm(100), id = 1:100)
p <- rPlot(y ~ x, data = test1,
type = 'point',
point = list(events = list(click = "#!function(item){ alert( 'x: ' + item.x +
' y: ' + item.y + ' id: ' + item.id); }!#")),
tooltip = "#!function(item){ return 'x: ' + item.x +
' y: ' + item.y + ' id: ' + item.id }!#")
p
HighCharts示例(成功创建警报弹出窗口):
require(rCharts)
a <- hPlot(freq ~ Exer, data = plyr::count(MASS::survey, c('Sex','Exer')), type = 'bar', group = 'Sex', group.na = 'NA\'s')
a$plotOptions(bar = list(cursor = 'pointer', point = list(events = list(click = "#! function() { alert ('Category: '+ this.category +', value: '+ this.y); } !#"))))
a
下面是我当前的代码,它绘制但不会触发点击事件:
require(rCharts)
set.seed(1)
test1 <- data.frame(x = rnorm(100), y = rnorm(100), id = 1:100)
p <- rPlot(y ~ x, data = test1,
type = 'point',
point = list(events = list(click = "#! function() {alert('testMessagePleaseWork');} !#")),
tooltip = "#!function(item){ return 'x: ' + item.x + ' y: ' + item.y + ' id: ' + item.id }!#")
p
目前使用rCharts v0.4.2: 套餐:rCharts 类型:包装 标题:使用Polycharts.js的交互式图表 版本:0.4.2 日期:2013-04-09
答案 0 :(得分:2)
每个javascript图表库都有自己的处理事物的机制,包括点击事件。因此,通常尝试将方法从一个库复制到另一个库将无法正常工作。幸运的是,polychart
具有支持点击处理程序的机制。这是一个最小的例子。我实际上是使用afterScript
添加一个javascript代码段,它将处理程序添加到图表中。用于交互处理程序的多图表中的文档非常薄,因此要做更有意义的事情,您将不得不深入了解他们的源代码或查看他们的示例。
require(rCharts)
set.seed(1)
test1 <- data.frame(x = rnorm(100), y = rnorm(100), id = 1:100)
p <- rPlot(y ~ x,
data = test1,
type = 'point',
tooltip = "#!function(item){ return 'x: ' + item.x + ' y: ' + item.y + ' id: ' + item.id }!#"
)
p$set(dom = 'chart1')
p$setTemplate(afterScript = "
<script>
graph_chart1.addHandler(function(type, e){
var data = e.evtData
if (type === 'click'){
alert('You clicked on' + data.x.in[0] + ',' + data.y.in[0])
}
})
</script>
")
要完成这项工作,您需要安装dev
的{{1}}分支
rCharts