R shiny app with rCharts

試著忘記壹切 提交于 2019-12-11 09:40:29

问题


I'm able to create this graph with rCharts:

library(rCharts)
X <- structure(list(Var1 = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
                                       8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 
                                       3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), .Label = c("1", "2", "3", "4", 
                                                                                    "5", "6", "7", "8", "9", "10"), class = "factor"), Var2 = structure(c(1L, 
                                                                                                                                                          1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                                                                                                                                          2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("control", 
                                                                                                                                                                                                                          "treatment1", "treatment2"), class = "factor"), Freq = c(0L, 
                                                                                                                                                                                                                                                                                   0L, 3L, 2L, 6L, 9L, 13L, 36L, 50L, 497L, 0L, 2L, 1L, 3L, 6L, 
                                                                                                                                                                                                                                                                                   4L, 11L, 29L, 50L, 499L, 1L, 2L, 0L, 2L, 5L, 6L, 12L, 22L, 63L, 
                                                                                                                                                                                                                                                                                   490L)), .Names = c("Var1", "Var2", "Freq"), row.names = c(NA, 
                                                                                                                                                                                                                                                                                                                                             -30L), class = "data.frame")
n1<-nPlot(Freq ~ Var1, group = 'Var2', data = X, type = 'multiBarChart')
print(n1)

Now I'm trying to embeded in a Shiny app. I can do a shiny app with ggplot2, but I'm not sure how to print the rCharts graph.

This is the shiny code that I have right now:

#server.R
library(rCharts)
X <- structure(list(Var1 = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 
                                       8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L, 
                                       3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), .Label = c("1", "2", "3", "4", 
                                                                                    "5", "6", "7", "8", "9", "10"), class = "factor"), Var2 = structure(c(1L, 
                                                                                                                                                          1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
                                                                                                                                                          2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("control", 
                                                                                                                                                                                                                          "treatment1", "treatment2"), class = "factor"), Freq = c(0L, 
                                                                                                                                                                                                                                                                                   0L, 3L, 2L, 6L, 9L, 13L, 36L, 50L, 497L, 0L, 2L, 1L, 3L, 6L, 
                                                                                                                                                                                                                                                                                   4L, 11L, 29L, 50L, 499L, 1L, 2L, 0L, 2L, 5L, 6L, 12L, 22L, 63L, 
                                                                                                                                                                                                                                                                                   490L)), .Names = c("Var1", "Var2", "Freq"), row.names = c(NA, 
                                                                                                                                                                                                                                                                                                                                             -30L), class = "data.frame")

shinyServer(
  function(input, output) {
    output$histogram <- renderPlot({
      # You can access the value of the widget with input$select, e.g.
      output$value <- renderPrint({ input$select })
      n2 <- nPlot(Freq ~ Var1, group = 'Var2', data = X, type = 'multiBarChart')
      n2$set(dom = "histogram")
      return(n2)
      })
  }
)

#ui.R
shinyUI(fluidPage(
  titlePanel("Quiz 3 grades distribution"),

  sidebarLayout(
    sidebarPanel(
      helpText("Quiz 3 grade distribution by treatment group"),    
      selectInput("select", label = h3("Select box"), 
                  choices = list("All" = 0, "Not Perfect" = 1, "Perfect" = 2), 
                  selected = 0)
    ),

    mainPanel(plotOutput("histogram"))
  )
))

What am I doing wrong? Thanks!


回答1:


Use renderChart2 and showOutput to display nvd3 plots in shiny. Using renderChart2 doesn't require the using $set(dom = ....

library(rCharts)
library(shiny)
X <- data.frame(Var1 = c(1L, 2L, 3L, 4L, 5L, 6L, 7L,8L, 9L, 10L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 1L, 2L,3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L),
                Var2 = structure(c(1L,1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("control","treatment1", "treatment2"), class = "factor"),
                Freq = c(0L,0L, 3L, 2L, 6L, 9L, 13L, 36L, 50L, 497L, 0L, 2L, 1L, 3L, 6L, 4L, 11L, 29L, 50L, 499L, 1L, 2L, 0L, 2L, 5L, 6L, 12L, 22L, 63L,490L)
)
runApp(
  list(ui = fluidPage(
    titlePanel("Quiz 3 grades distribution"),

    sidebarLayout(
      sidebarPanel(
        helpText("Quiz 3 grade distribution by treatment group"),    
        selectInput("select", label = h3("Select box"), 
                    choices = list("All" = 0, "Not Perfect" = 1, "Perfect" = 2), 
                    selected = 0)
      ),

      mainPanel(
        showOutput("histogram","Nvd3")
      )
      )
  ),
  server = shinyServer(
    function(input, output, session) {
      output$histogram <- renderChart2({
        n2 <- nPlot(Freq ~ Var1, group = 'Var2', data = X, type = 'multiBarChart')
        n2
      })
    }
  )

  )
)



来源:https://stackoverflow.com/questions/24102372/r-shiny-app-with-rcharts

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!