2014-03-13 4 views
1

Group을 기반으로 여러 rCharts 원형 차트를 생성하고 싶습니다.이 Group은 데이터 프레임에 따라 변경 될 수 있습니다. 내가 ui.R에서 server.R반짝이는 웹 페이지에 동적으로 rCharts를 추가합니다

output$somePieCharts = renderUI({ 
list = unique(someDF$Group) 
plot_output_list = lapply(1:length(list), function(i){ 
    plotData = filter(someDF, Group==list[i]) 
    chartOutput(hPlot(Total~Variable.Type, data=plotData, type='pie')) 
} 
          ) 
do.call(tagList, plot_output_list) 
}) 

에서 여기

https://gist.github.com/wch/5436415/

someDF = structure(list(Variable.Type = c("Apple", "Orange", "Banana", 
"Apple", "Orange", "Banana"), Total = c(2, 1, 3, 6, 5, 4), Market = c("Pete", 
"Pete", "Pete", "Sams", "Sams", "Sams")), .Names = c("Variable.Type", 
"Total", "Market"), row.names = c(NA, -6L), class = "data.frame") 

list = unique(someDF$Market) 

에서와 유사한 예를 사용하고자하는

다음
uiOutput('somePieCharts') 
+0

일을 좀 더 구체적으로 제공하십시오. – Ramnath

+0

답변을 다시 주실 때 질문을 삭제 하시겠습니까? ;) –

+0

@JulienNavarre, 왜 질문을 삭제하겠습니까? – BigDataScientist

답변

1

수정할 수있는 방법입니다 hPlot과 함께 사용하는 동적 플롯 예제. 방금 plotOutputchartOutputrenderPlotrenderChart2으로 바꿨습니다. 나머지 변경 사항은 자체적으로 설명됩니다.

library(shiny); library(rCharts) 
Markets = unique(someDF$Market) 
server = function(input, output) { 

    # Insert the right number of plot output objects into the web page 
    output$plots <- renderUI({ 
    plot_output_list <- lapply(1:2, function(i) { 
     plotname <- paste("plot", i, sep="") 
     chartOutput(plotname, "highcharts") 
    }) 

    # Convert the list to a tagList - this is necessary for the list of items 
    # to display properly. 
    do.call(tagList, plot_output_list) 
    }) 

    # Call renderPlot for each one. Plots are only actually generated when they 
    # are visible on the web page. 
    for (i in 1:length(Markets)) { 
    # Need local so that each item gets its own number. Without it, the value 
    # of i in the renderPlot() will be the same across all instances, because 
    # of when the expression is evaluated. 
    local({ 
     my_i <- i 
     plotname <- paste("plot", my_i, sep="") 

     output[[plotname]] <- renderChart2({ 
     print(my_i) 
     plotData = subset(someDF, Market == Markets[my_i]) 
     print(plotData) 
     hPlot(Total ~ Variable.Type, data = plotData, type='pie') 
     }) 
    }) 
    } 
} 

ui = pageWithSidebar(
    headerPanel("Dynamic number of plots"), 

    sidebarPanel(), 

    mainPanel(
    # This is the dynamic UI for the plots 
    uiOutput("plots") 
) 
) 

runApp(list(ui = ui, server = server))