Shiny是RStudio公司开发的一个R包,通过它可以用R语言开发交互式web应用。 Shiny包的特点在于不需要太了解网页语言(比如我就只看了一些html和CSS基础语法,反正看过也没记住多少),可以用纯R来搭建,生成的网页应用是动态交互的,而且是即时更新的。
前段时间在http://shiny.rstudio.com/articles/看了点关于shiny的基础语法,并且在http://www.biotrainee.com/thread-1563-1-1.html论坛上看到一篇使用shiny将一个热图R包做成一个交互式界面的文章,于是乎自己也写一个练练手。
Shiny程序主要分ui和server两部分:
- Ui界面一般指的是交互界面,上面可以展示图片、输入参数以及一系列的按钮等美化工具
- server一般指后台操作,通过函数将UI界面的输入通过一系列的过程转化为输出,最终呈现的UI界面上
下面我整理一下写一个shiny程序的流程,以我写好的shiny程序为例。这个shiny app主要是将ComplexHeatmap这个做热图的R包的部分功能呈现出来,主要展示其做热图的一些参数。
Shiny程序我是放在https://www.shinyapps.io/,其是由RStudio开发的一个cloud,不需要自己有服务器就可以将shiny程序挂在上面。
然后我的程序的网址是https://anlan.shinyapps.io/complexheatmap/
流程:
UI
- 我使用了shinydashboard包的默认主题布局
- 使用sidebarMenu()函数形成2个ui界面,分别是Quickly visualize和Complex visualize,见https://rstudio.github.io/shinydashboard/structure.html
- 然后根据教程http://shiny.rstudio.com/articles/layout-guide.html将一些参数布置在ui界面上
Server
- 读取数据,赋予特定函数
- 读取来自ui的input,分别作为Heatmap()的参数来绘制热图,可以参考https://github.com/Bohdan-Khomtchouk/shinyheatmap/blob/master/shinyheatmap/server.r
- 输出热图到UI界面上,可参考同上
- 输出图片保存为各个格式的图片,可参考http://www.biotrainee.com/thread-1630-1-1.html
整体上是一件比较简单的事情,就是写起代码来有时会比较繁琐,我的代码放在https://github.com/kaigu1990/Shiny/tree/master/ComplexHeatmap
只要参考下别人的shiny代码,模仿下,一般就能形成一个简单的shiny的程序
热图可参考https://github.com/Bohdan-Khomtchouk/shinyheatmap/tree/master/shinyheatmap
DE(差异)分析可参考https://github.com/yan-cri/DEApp
本文出自于http://www.bioinfo-scrounger.com转载请注明出处