生物信息学从零开始学生物信息学与算法

Shiny入门

2020-05-22  本文已影响0人  Shaoqian_Ma

R shiny

官方教程在:https://shiny.rstudio.com/tutorial/

代码海洋上的ShinyOmics:https://codeocean.com/capsule/6605476/tree 这是我最近在代码海洋codeocean网站上找到的,可以作为解析shiny的范本,不过它的server和ui是分别包装的(问题不大)

代码海洋上有很多不同学科方向的一些paper的示例代码,有的paper比如nature communication上的会把代码公开在上面。

另外我强烈推荐一个粉红色系的小工具:https://www.researcher-app.com/paper/4803052 它可以跟踪你感兴趣学科方向的paper

如果对用R爬取高通量数据感兴趣,可以看看最近发布在预印本上的新款R包:SpiderSeqR: an R package for crawling the web of high-throughput multi-omic data repositories for data-sets and annotation我打算有时间把这两个项目自己操作一遍

Structure of a Shiny App

主要的脚本文件app.R包含的要素有:

用户交互界面:The user interface (ui) object controls the layout and appearance of your app

server是一个函数,用来构建app。uiserver可以写在一个脚本里面

我们可以从shiny包自带的示例文件里面查看其构成:

library(shiny)
runExample("01_hello")

其中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")

    )
  )
)

一个完整的shiny代码结构如下:开头需要载入shiny包,结尾需要call一下shinyApp这个函数

library(shiny)

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

server <- ...

shinyApp(ui = ui, server = server)

Running an App

建议每个app.R文件放在一个新建的目录里,方便调用:

library(shiny)
runApp("my_app")

这里my_app是app.R文件所在目录的路径,runApp这个函数和read.csv, read.table等函数类似。之前用的runExample("01_hello")说明有一个系统目录叫做01_hello,所以我们可以直接调用这个目录下的app代码

这里我把example的app.R代码拷贝到自己的my_app目录下,并修改了bins的最小值为5,bins的颜色为orange:

helloworld.jpg

默认的展示是“normal” mode,之前的example中因为是showcase mode所以可以顺便显示出app.R的代码

如果需要改成 showcase mode,可以修改一下函数的参数:

runApp("App-1", display.mode = "showcase")

如果需要调用app,除了可以用函数runApp("my_app")以外,还可以打开app.R脚本,编辑界面右上方有run app的按钮:

Run app button

不仅如此,点击下拉选项,还可以选择用新的studio窗口打开还是在浏览器里打开。

总的来说,创建一个R shiny分为以下几步:

Go Further

需要创建新的属于自己的app的话,可以考虑修改已有的app模板:

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

更多的模板可以在Galley找到很多

下面这个就是代码海洋上的shinyOmics,数据组织得非常好,找到项目以后,copy到自己的仓库里面,可以运行可以修改(不过运行容易出bug,建议把仓库的代码和数据完整下到本地自己捣鼓一下)

copy_shinyOmics.jpg
上一篇下一篇

猜你喜欢

热点阅读