我试图在我的闪亮应用中的不同页面上绘制多个图。这是一个可重复的例子:
我的模块代码是:
library(ggplot2)
dfunc <- function(data, page_number) { p <- ggplot(data = data, aes(x = data[, 3], y = data[, 2])) +
geom_point() for (i in 1:page_number) {
print(p) } }
dfUI <- function(id) { ns <- NS(id)
tagList(titlePanel("Multi plots"),
sidebarLayout(
sidebarPanel(
numericInput(
ns("page_number"),
"Number of Plots",
1,
min = 1,
step = 1
),
actionButton(ns("generateplot"), "Generate Plot")
),
mainPanel(plotOutput(ns("view")))
)) }
df <- function(input, output, session) { observeEvent(input$generateplot, {
output$view <- renderPlot({
data = mtcars
dfunc(data = data,
page_number = input$page_number)
}) }) }
有一个全局文件调用此文件存储这些函数: 通过这个:
library(shiny)
library(shinythemes)
source("modules/dfunc.R")
服务器文件是这样的:
source('global.R')
shinyServer(function(input, output, session) {
callModule(df, "dfunc")
})
ui.R是这样的:
source('global.R')
shinyUI(fluidPage(
shinythemes::themeSelector(),
headerPanel("The Shiny App"),
tabsetPanel(
tabPanel("Multi page plot", dfUI('dfunc')),
type = "pills"
)
))
现在的问题是,如果我使用我的dfunc函数,它会打印尽可能多的绘图,因为我在page_number中给出了相同的功能,但是当我在闪亮的应用程序中调用类似的功能时,它只打印单个的。闪亮的应用程序是否可以在同一页面或多页上打印所需的多个绘图。
提前致谢。