闪亮的

在Web浏览器中显示的交互式图形。很容易创造。我们的任务 - 创建一个交互式的火山图,用于查看差异表达分析的输出。

1 .有效!

为项目创建一个文件夹;叫它火山。现在添加两个纯文本文件UI.R.server.r.

|—火山|—ui。R |——服务器。R

添加以下代码UI.R.。这将指定具有侧栏的页面的“用户界面”。页面将在顶部,侧栏面板和主面板上具有标题。

图书馆(闪亮)ShinyUI(PageWithsidebar(标题栏(“Volcano!”),Sidebarpanel(),MainPanel()))

现在添加以下代码server.r.。这没有任何事情!

库(闪亮)ShinyServer(功能(输入,输出){})

好的,现在,启动R并运行以下命令。确保这个论证runApp是您创建的文件夹的路径。

图书馆(闪亮)RunApp(“火山”)

就是这样!不是很兴奋。

第2步:问候人你怎么样?

保持你的会话和web浏览器运行。

一种。让我们询问用户通过编辑来识别自己UI.R.......

库(闪亮)ShinyUI(PageWithsidebar(标题栏(“Volcano!”),SidebarPanel(TextInput(“名称”,“您的姓名:”)),mainpanel())))

返回浏览器,重新加载页面,并查看您可以执行的操作!看到错误?可能你在一条线结束时忘记了逗号或犯了另一个错误。阅读错误,正确UI.R.,并重新加载页面。

湾好的,这server.r.将要获取输入并返回一些输出。它使用参数来实现这一点输入输出。这些都是列表,其中元素以字段命名(如“名称”或返回值。下面的代码接受用户输入的名称,创建问候语,并以如下方式呈现结果闪亮的可以与之合作。

图书馆(闪亮)ShinyServer(功能(输入,输出){输出$问候语< -  rendertext(粘贴(“问候语”,输入$名称,“you?yhour?)))})

您应该能够在浏览器中重新加载页面。可能是屏幕变灰色的情况,在这种情况下,您的服务器代码中存在错误。检查您开始r才能查看出现问题的地方,解决问题,并重新加载页面。

C。注意闪亮的输入名称时似乎没有任何事情。实际上,它在等待要做点什么 - 到目前为止,对用户没有反馈,所以无需制定问候语。所以…

在里面UI.R.文件,安排通过更新来显示欢迎语mainPanel

library(闪亮)shinyUI(pageWithSidebar(headerPanel(“火山!”)),sidebarPanel(textInput(“名字”,“你的名字:”)),mainPanel(textOutput('greeting'))))

重新加载浏览器中的页面,然后尝试输入或更改您的姓名。尝试编辑服务器代码,以便仅响应用户输入名称。

function(function(input, output) {output$greeting <- renderText({if (nchar(input$name) == 0) character() else paste("greeting ", input$name, "how R you?")})})});

凉爽的!

火山!数据

我们将经过相同的例程,修改用户界面以接受不同的输入,然后服务器响应新输入,最后将触发服务器的用户界面。说明较短,因为更改非常不言自明。

一种。添加A.fileInput()小部件到您的用户界面。这'datafile'字符串是包含有关信息的变量的名称如何上传文件。

图书馆(闪亮)ShinyUI(PageWithsidebar(标题栏(“Volcano!”),SidebarPanel(FileInput(“DataFile”,“选择TopTable CSV文件”)),MainPanel()))

返回浏览器,重新加载页面,并查看您可以执行的操作!

b.按照服务器上的实际数据输入。这使用渲染函数要将表返回到用户界面。这“数据文件”如果用户未选择文件,则变量为null,并且如果用户选择了文件,则具有多个元素。

库(闪亮)ShinyServer(函数(输入,输出){OUTPUT $ TOPTABLE < -  RODELDATATABLE({if(ins.null(输入$ datafile))return(null)read.csv(输入$ datafile $ datapath)},选项=列表(pageLength = 5))})

您应该能够在浏览器中重新加载页面,但没有任何新功能可见。

c。最后,修改UI.R.显示表格的头部

shinyUI(pageWithSidebar(headerPanel(“火山”)),sidebarPanel(fileInput(“数据文件”,“选择topTable CSV文件”)),mainPanel(dataTableOutput(“topTable”))))

查看您现在创建的内容。

火山!

现在让我们创建一个火山图。

一种。我们不需要更改用户输入,因此直接跳转到(b)。

湾首先,我们将实现这一点以阅读数据,但我们会改变它......我会使用我的情节晶格但是使用ggplot2.或任何您想要的环境;请记住加载服务器中的任何其他必需库。

$toptable <- renderDataTable({if (is.null(input$datafile)) return(NULL) read.csv(input$datafile$datapath)},if (is.null(input$datafile)) return(NULL) csv <- read.csv(input$datafile$datapath) print(xyplot(-log10(pvalue) ~ log2FoldChange, csv)})})

C。并且用于显示绘图(首先,表格上方)

shinyUI(pageWithSidebar(headerPanel("火山!")),sidebarPanel(fileInput('datafile', '选择topTable CSV文件')),mainPanel(dataTableOutput(' topTable '), plotOutput('火山',宽度="400px"))))

看看你的手工!(我怎么知道该怎么办?我正在读书闪亮的教程看看帮助页面,例如,?PlotOutput.)。

练习

  1. 清理服务器代码,以便在数据中只读取一个函数。使用反应功能表示数据输入取决于用户输入。调整顶部表和Volcano绘图功能以使用此单个数据输入功能。

  2. 更新服务器代码以从最大到最大到最小的绝对值日志折叠更改,并仅返回顶部20值以进行可视化。

    练习1和2我的server.r.好像

    库(闪亮)库(格子)ShinyServer(函数(输入,输出){datainput < -  active({if(ins.null(输入$ datafile))return(null)read.csv(输入$ datafile $ datapath)})输出$ toptable < -  raysdatatable(如果(是null(csv))返回(null)o < - 订单(abs(csv $ log2foldchange),decleasing = true)csv [head(o,20),],选项= list(pageLength = 5))输出$ Volcano < -  renderplot({CSV < -  DataInput()(IS.Null(CSV))返回(NULL)打印(XYPLOT(-LOG10(Pvalue))〜log2foldchange,csv))})})
  3. 添加一些输入部件UI.R.例如,允许用户指定不同的参数read.csv.,并实施这些server.r.

  4. 看看ReportingTools.分析服务器用于预构建交互式报告的包。