Shiny是一个R软件包,可轻松从R直接构建交互式Web应用程序。本课程将使您立即开始构建Shiny应用程序。

如果还未安装Shiny软件包,打开R会话窗,确保联网状态,然后运行

install.packages("shiny")

R语言如何对CoVaR进行动态画图 r语言shiny画图_App


Shiny软件包具有11个内置示例,每个示例都演示Shiny的工作方式。 且每个都是独立的Shiny应用程序。

“Hello Shiny”示例绘制了R的 faithful 数据集的直方图,并带有可配置数量的bin。 用户可以使用滑杆更改bin的数量,该应用程序将立即响应他们的输入。 您将使用Hello Shiny来探索Shiny应用程序的结构并创建您的第一个应用程序。
要运行“Hello Shiny”,请输入:

library(shiny)
runExample("01_hello")

Shiny应用程序的结构

shiny的应用程序包含在一个名为app.R的脚本中。脚本app.R位于目录(例如newdir/)中,并且可以使用 runApp(“newdir”) 运行该应用程序。

app.R具有三个组成部分:

  • 用户界面对象
  • 服务器功能
  • 调用 shinyApp 函数

用户界面(ui)对象控制应用程序的布局和外观。server功能包含计算机构建应用程序所需的说明。最后,shinyApp函数根据显式的UI/server对创建Shiny应用程序对象。

注意:在0.10.2版之前,Shiny不支持单文件应用程序,并且ui对象和server功能需要包含在分别称为ui.R和server.R的单独脚本中。 Shiny仍支持此功能,但是本教程和许多支持文档都集中在单文件应用程序上。

关于单文件应用程序的一个不错的功能是,您可以将整个应用程序复制并粘贴到R控制台中,这使得轻松快速共享代码供其他人进行试验变得容易。例如,如果将上面的代码复制并粘贴到R命令行中,它将启动Shiny应用程序。

ui
这是Hello Shiny示例的ui对象。

library(shiny)

# Define UI for app that draws a histogram ----
ui <- fluidPage(

  # App title ----
  titlePanel("Hello Shiny!"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar panel for inputs ----
    sidebarPanel(

      # Input: Slider for the number of bins ----
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)

    ),

    # Main panel for displaying outputs ----
    mainPanel(

      # Output: Histogram ----
      plotOutput(outputId = "distPlot")

    )
  )
)

server
这是Hello Shiny示例的server功能。

# Define server logic required to draw a histogram ----
server <- function(input, output) {

  # Histogram of the Old Faithful Geyser Data ----
  # with requested number of bins
  # This expression that generates a histogram is wrapped in a call
  # to renderPlot to indicate that:
  #
  # 1. It is "reactive" and therefore should be automatically
  #    re-executed when inputs (input$bins) change
  # 2. Its output type is a plot
  output$distPlot <- renderPlot({

    x    <- faithful$waiting
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    hist(x, breaks = bins, col = "#75AADB", border = "white",
         xlab = "Waiting time to next eruption (in mins)",
         main = "Histogram of waiting times")

    })

}

一方面,Hello Shiny server功能非常简单。 该脚本会进行一些计算,然后绘制带有所需bins的直方图。

但是,您还会注意到,大多数脚本都包含在对renderPlot的调用中。 函数上方的注释对此有所解释,但是如果您感到困惑,请不要担心。 我们将在稍后详细介绍这个概念。

使用Hello Shiny应用程序并查看源代码。 尝试对应用程序的工作方式有所了解。 但是在执行此操作之前,请注意,在您的app.R文件中,您需要从加载Shiny包开始,并以调用ShinyApp结尾:

library(shiny)

# See above for the definitions of ui and server
ui <- ...

server <- ...

shinyApp(ui = ui, server = server)

Hello Shiny应用程序处于活动状态时,您的R会话将很忙,因此您将无法运行任何R命令。 R正在监视应用程序并执行应用程序的反应。 要恢复R会话,请按Escape键或单击“停止标志”图标(位于RStudio控制台面板的右上角)。

运行一个应用程序

每个Shiny应用程序都具有相同的结构:包含ui和server的app.R文件。 您可以通过创建新目录并在其中保存一个app.R文件来创建Shiny应用程序。 建议每个应用程序都位于其自己的唯一目录中。

您可以通过将其目录名称传参给函数runApp来运行Shiny应用程序。 例如,如果您的Shiny应用程序位于名为my_app的目录中,请使用以下代码运行它:

library(shiny)
runApp("my_app")

注意:runApp与R中的read.csv,read.table和许多其他函数类似。runApp的第一个参数是从工作目录到应用程序目录的文件路径。 上面的代码假定app目录位于您的工作目录中。 在这种情况下,文件路径仅是目录的名称。

(如果您想知道,Hello Shiny应用程序的文件将保存在一个名为“01_hello”的特殊系统目录中。该目录旨在与runExample(“01_hello”)调用一起使用。)

小试牛刀

在您的工作目录中创建一个名为App-1的新目录。 然后将上面的app.R脚本复制并粘贴到您的目录中(Hello Shiny中的脚本)。 完成后,目录应如下所示:

R语言如何对CoVaR进行动态画图 r语言shiny画图_App_02


通过运行runApp(“App-1”) 启动您的应用程序。 然后单击转义并对您的应用程序进行一些更改:

  1. 将标题从“Hello Shiny!”更改为 转到“ Hello World!”。
  2. 将滑杆的最小值设置为5。
  3. 将直方图边框颜色从“white”更改为“orange”。

准备就绪后,再次启动您的应用程序。 您的新应用应与下图匹配。 如果不是,或者您想检查代码,请按模型答案按钮以显示我们如何完成这些任务。

R语言如何对CoVaR进行动态画图 r语言shiny画图_R语言如何对CoVaR进行动态画图_03


默认情况下,Shiny应用程序以“normal”模式显示,如上图所示。 Hello Shiny和其他内置示例以“showcase mode”显示,这是与app.R脚本一起显示的另一种模式。

如果您希望您的应用以展示模式显示,则可以运行 runApp(“App-1”,display.mode = “showcase”) 。

重新启动应用

要重新启动您的Shiny应用程序,请执行以下操作:

  • 运行 runApp(“ App-1”) ,或
  • 在RStudio编辑器中打开app.R脚本。 RStudio将识别Shiny脚本并提供一个Run App按钮(在编辑器顶部)。 单击此按钮以启动您的应用程序,或使用键盘快捷键:Command + Shift + Enter(在Windows上为Control + Shift + Enter)。

    RStudio默认情况下会在新窗口中启动该应用程序,但您也可以选择在专用的查看器窗口或外部Web浏览器中启动该应用程序。 通过单击“Run App”旁边的图标进行选择。

回顾

创建自己的Shiny应用程序步骤:

  • 为您的应用程序创建一个名为 myapp/ 的目录。
  • 将您的app.R脚本保存在该目录中。
  • 使用runApp或RStudio的键盘快捷键启动应用。
  • 单击escape以退出Shiny应用程序。

走得更远

您可以通过复制和修改现有的Shiny应用程序来创建Shiny应用程序。 Shiny画廊提供了一些很好的示例,或者使用下面列出的十一个预构建的Shiny示例。

runExample("01_hello")      # a histogram
runExample("02_text")       # tables and data frames
runExample("03_reactivity") # a reactive expression
runExample("04_mpg")        # global variables
runExample("05_sliders")    # slider bars
runExample("06_tabsets")    # tabbed panels
runExample("07_widgets")    # help text and submit buttons
runExample("08_html")       # Shiny app built from HTML
runExample("09_upload")     # file upload wizard
runExample("10_download")   # file download wizard
runExample("11_timer")      # an automated timer

每个都展示了Shiny应用程序的功能。 所有“ Shiny”示例应用程序均以“showcase”模式打开(显示屏中显示app.R脚本)。

但是,为什么要限制自己复制其他应用程序呢? 接下来的几课将向您展示如何从头开始构建自己的Shiny应用程序。 您将了解Shiny应用程序的每个部分,并通过在线部署自己的Shiny应用程序来完成。

准备就绪后,请继续学习下一节,在这里您将学习如何构建Shiny应用程序的布局和外观。