在Shiny中无法生成ggplot2

时间:2015-06-10 03:25:19

标签: r ggplot2 shiny ecdf

以下是我的代码。我可以在R studio中制作ecdf情节,但是当我把它放在一个闪亮的应用程序中时,就像我在下面一样:

Server.R

library(shiny)
library(ggplot2)
shinyServer(function(input, output) {
  datasetInput <- reactive({
    mydf = data.frame(
      a = rnorm(100, 0, 1),
      b = rnorm(100, 2, 1),
      c = rnorm(100, -2, 0.5)
    )

    mydf_m = melt(mydf)
    mydf_m <- ddply(mydf_m,.(variable),transform, ecd = ecdf(value)(value))

  })

  output$myplot <- renderGvis({

    p<-(ggplot(mydf_m,aes(x = value, y = ecd)) + 
      geom_line(aes(group = variable,colour = variable)))
    print(p)

  })
})

ui.R

library(shiny)
library(ggplot2)

shinyUI(fluidPage(
  titlePanel("title panel"),

  sidebarLayout(
    sidebarPanel( "sidebar panel"),
    mainPanel(
      tabsetPanel(
        tabPanel("Tab 1", h4("Head 1"),plotOutput("myplot"))
      )
    )
  )
))

我做错了什么?

1 个答案:

答案 0 :(得分:4)

您在datasetInput中有一个被动数据集,但您在绘图功能中没有使用它。在ggplot来电中,只需将mydf_m替换为datasetInput()。我还将renderGvis替换为renderPlot,并返回来自被动datasetInput的数据。然后服务器

server <- shinyServer(function(input, output) {
    datasetInput <- reactive({
        mydf = data.frame(
            a = rnorm(100, 0, 1),
            b = rnorm(100, 2, 1),
            c = rnorm(100, -2, 0.5)
        )

        mydf_m = melt(mydf)
        mydf_m <- ddply(mydf_m,.(variable),transform, ecd = ecdf(value)(value))
        mydf_m
    })

    output$myplot <- renderPlot({
        p <- ggplot(datasetInput(), aes(x = value, y = ecd)) + 
              geom_line(aes(group = variable, colour = variable))
        print(p)  # just `p`
        })
})