此示例显示了如何使用JavaScript将工具提示添加到rPlot:rPlot tooltip problems
此示例显示了如何将点击事件添加到hPlot(高图):
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


以下是我当前绘制但未触发click事件的代码:

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

最佳答案

每个javascript图表库都有其自己的机制来处理事物,包括click事件。因此,通常,尝试将方法从一个库复制到另一个库是行不通的。幸运的是,polychart具有支持点击处理程序的机制。这是一个最小的示例。我实质上是使用afterScript添加一个javascript代码段,该代码段将处理程序添加到图表中。在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',
  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>
")


要使此工作有效,您将需要安装devrCharts分支

install.packages('base64enc') # dependency
devtools::install_github("ramnathv/rCharts@dev")

关于javascript - 单击事件上的rCharts::rPlot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23147487/

10-09 13:50