2014-04-18 4 views
1

이 예제는 rPlot에 자바 스크립트를 사용하여 툴팁을 추가하는 방법을 보여 주었다 rPlot이 hPlot과 비슷한 on.click 이벤트를 수행하게하려면 rPlot/polycharts를 사용하여 할당하는 적절한 방법을 알아낼 수 없었습니다.rCharts :: rPlot는

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년 4월 9일

답변

2

모든 자바 스크립트 차트 라이브러리는 클릭 이벤트를 포함하여 일을 처리하는 자체 메커니즘을 가지고 . 따라서 일반적으로 한 라이브러리의 접근 방식을 다른 라이브러리로 복사하려고 시도하면 작동하지 않습니다. 다행히도 polychart에는 클릭 핸들러를 지원하는 메커니즘이 있습니다. 다음은 최소한의 예입니다. 본질적으로 차트에 핸들러를 추가하는 afterScript을 사용하여 javascript 스 니펫을 추가하고 있습니다. 상호 작용 처리기에 대한 polycharts의 설명서는 매우 얇기 때문에 더 의미있는 작업을 수행하려면 소스 코드를 보거나 예제를 살펴 봐야합니다.

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>  
") 

이 일을하려면,이 솔루션은 큰 일 최고 rCharts

install.packages('base64enc') # dependency 
devtools::install_github("ramnathv/[email protected]") 
+0

dev 지점을 설치해야합니다. 감사! – Edik

+0

이 솔루션을 발견 한 것은 내가 작업중인 반짝이는 앱에서 작동하지 않는 것 같습니다. "afterScript"가 실행되지 않는 것 같습니다 (console.log를 시도한 경우). 플롯이 (툴팁으로) 렌더링되지만 클릭 이벤트는 발생하지 않습니다. 모든 단서 또는 전체 보고서를 제출해야합니까? – Edik

+0

github에 대한 전체 보고서를 제출할 수 있습니까? – Ramnath