2012-11-10 6 views
4

현재 내 코드에서는 처음에 사용자가 원하는 데이터 집합을 선택할 수 있습니다 (두 가지 중 하나를 선택). 그런 다음 그들이 선택한 것을 기반으로 데이터 집합의 각 하위 집합에 대한 다른 플로팅 변수가 나타납니다. 이것은 플롯이 기본적으로 별도로 표시되는 대신 하나의 플롯에 모두 중첩되도록하려는 경우를 제외하고는 잘 작동합니다.R Shiny 문제 - 하나의 그래프에 여러 줄을 그려야합니다.

데이터 플롯의 기본 플롯 plot_Total이 있으며 데이터 세트의 다른 옵션은이 특정 서브 세트를보고 있습니다. 그래서 단지 하나의 흩어 지기만하는 것이 합리적입니다.

output$plot_Total <- reactivePlot(function() { 
    plot.new() 
    plot.window(xlim=c(1850,2020), ylim = c(0,5000000)) 
    axis(1) 
    axis(2) 
    title(main="Numbers over the years") 
    title(xlab="Year") 
    title(ylab="Number of people") 
    box() 
    points(dat$Year, dat$Total, col="red") 
    lines(dat$Year, dat$Total, col="red") 
    }) 

output$plot_subset1 <- reactivePlot(function() { lines(dat$Year, dat$subset1) }) 
output$plot_subset2 <- reactivePlot(function() { lines(dat$Year, dat$subset2) }) 

왜이 코드 조각이 작동하지 않습니까? 단지 "오류 : plot.new가 아직 호출되지 않았습니다."라는 메시지 아래에 각 (원치 않는) 그래프에 대한 빈 공간을 만듭니다. 이 줄을 기본 (plot_Total) 플롯에 추가하려면 어떻게 지정해야합니까?

+3

홈페이지의 예를 보았습니까? 기존의 플롯에 낮은 레벨의 플로팅 명령을 추가하면 원하는대로 할 수 있습니다 : http://www.rstudio.com/shiny/ – Chase

답변

7

업데이트 : 반짝 홈페이지의 그래프에 대한 코드를 장난으로 내가이 작업을 수행했다는 것을 깨달았다

output$plot_Total <- reactivePlot(function() { 
    plot.new() 
    plot.window(xlim=c(1850,2020), ylim = c(0,5000000)) 
    axis(1) 
    axis(2) 
    title(main="Numbers over the years") 
    title(xlab="Year") 
    title(ylab="Number of people") 
    box() 
    points(dat$Year, dat$Total, col="red") 
    lines(dat$Year, dat$Total, col="red") 
    if (input$RC) { lines(dat$Year, dat$dat)} 
    }) 

이 두 가지 방법으로 내 원래의 코드와 다릅니다. 첫째, 같은 반응 플롯 함수 내에서 하나의 라인으로 조건이 추가됩니다. 둘째, 하위 집합 RC 만 포함하는 새로운 data.frame을 만들었습니다. 이것은 처음에 입력 $ dat $ RC로 작동하지 않았지만 RC가 자체 데이터 프레임 일 때 RC는 입력 $ RC로 작동합니다.

올바른 방향으로 나를 조종하는 추격 포인트!