无法在 Shiny 中生成 ggplot2
Cannot produce ggplot2 in Shiny
下面是我的代码。我能够在 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"))
)
)
)
))
我做错了什么?
您在 datasetInput
中有一个反应数据集,但您没有在绘图函数中使用它。在您的 ggplot
调用中,只需将 mydf_m
替换为 datasetInput()
。我还将 renderGvis
替换为 renderPlot
和 return 来自反应 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`
})
})
下面是我的代码。我能够在 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"))
)
)
)
))
我做错了什么?
您在 datasetInput
中有一个反应数据集,但您没有在绘图函数中使用它。在您的 ggplot
调用中,只需将 mydf_m
替换为 datasetInput()
。我还将 renderGvis
替换为 renderPlot
和 return 来自反应 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`
})
})