内容简介:Shiny的UI界面可用多个方式来展示,你可以用shiny基本布局函数+theme主题函数来实现;也可以用shinydashboard来定义你网页的布局,当然还有shiny的JS插件以及其他技巧。这里主要介绍一下shiny的一些基本布局函数(对之前Learning Shiny的一些补充)以及shinydashboard包的使用首先的是Shiny layout guide:
Shiny的UI界面可用多个方式来展示,你可以用shiny基本布局函数+theme主题函数来实现;也可以用shinydashboard来定义你网页的布局,当然还有shiny的JS插件以及其他技巧。
这里主要介绍一下shiny的一些基本布局函数(对之前Learning Shiny的一些补充)以及shinydashboard包的使用
首先的是Shiny layout guide:
Grid Layout
fluidRow( column(4, wellPanel( sliderInput("obs", "Number of observations:", min = 1, max = 1000, value = 500) ) )
1. fluidRow():类似流动布局,如果该函数下面有多个column,则从左到右排布;
2. column(4,):代表宽度4,总宽度为12,如果该函数下面有多个部件,则从上到下排布;
3. wellPanel():一种布局显示方式
Tabsets
ui <- fluidPage( titlePanel("Tabsets"), sidebarLayout( sidebarPanel( # Inputs excluded for brevity ), mainPanel( tabsetPanel( tabPanel("Plot", plotOutput("plot")), tabPanel("Summary", verbatimTextOutput("summary")), tabPanel("Table", tableOutput("table")) ) ) ) )
1. 上述代码的UI布局,将“plot”、“Summary”和“Table”三块内容分别以tab形式放置的mainPanel上;
2. tabsetPanel(position = “”)可以设置这些tab的相对于content的方位,如below,left,right等,默认是在上方
Navlists
以list的形式展示需要的各个内容
ui <- fluidPage( titlePanel("Application Title"), navlistPanel( "Header A", tabPanel("Component 1"), tabPanel("Component 2"), "Header B", tabPanel("Component 3"), tabPanel("Component 4"), "-----", tabPanel("Component 5") ) )
Navbar Pages
以置顶的tab形式展示各块内容,其中navbarMenu()函数还可以设置子块,形成一个下拉菜单
ui <- navbarPage("My Application", tabPanel("Component 1"), tabPanel("Component 2"), navbarMenu("More", tabPanel("Sub-Component A"), tabPanel("Sub-Component B")) )
Column Offsetting
offset:表示偏移量,一般我的理解是相对上一个column的偏移量,如果不设置偏移量,一般默认是紧挨着的
ui <- fluidPage( fluidRow( column(4, "4" ), column(4, offset = 4, "4 offset 4" ) ), fluidRow( column(3, offset = 3, "3 offset 3" ), column(3, offset = 3, "3 offset 3" ) ) )
Column Nesting
这里就是column的嵌套过程
ui <- fluidPage( fluidRow( column(12, "Fluid 12", fluidRow( column(6, "Fluid 6", fluidRow( column(6, "Fluid 6"), column(6, "Fluid 6") ) ), column(width = 6, "Fluid 6") ) ) ) )
下面则是shinydashboard包的一些用法:
Shiny中用shinydashboard包是来展示dashboards,如果想简单做个UI界面的话,上述的几点layout就足够了。但是如果想做个美观的UI界面,那么可以尝试下shinydashboard
shinydashboard在UI中主要也有三部分(header,sidebar和body)组成:
dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody() )
这 dashboardHeader()
用于设定dashboards的标题; dashboardSidebar()
相当于shiny默认布局方式中的 sidebarPanel
,用于设定导航栏; dashboardBody()
则类似于 tabsetPanel
dashboardHeader()
基本用法是设定标题,但是其还有Message menus来设定一些信息栏(信封的标签),Notification menus来设定一些通知栏(感叹号的标签),Task menus(这个不太清楚)
Sidebar这个快速导航功能则是靠 dashboardSidebar()
来实现的
如果设定Sidebar的宽度,则 dashboardSidebar(width=300)
即可,header标题的宽度也是类似 dashboardHeader(titleWidth = 350)
如果展示多个页面(类似上面的Navbar Pages),则可以在 dashboardSidebar()
函数中调用 menuItem()
;如果一个menu下还要一个sub menu,那么用 menuSubItem()
函数;而icon则可以选择tabPanel的标签样式,可在 https://fontawesome.com/icons?from=io
自行挑选
dashboardSidebar( sidebarMenu( id = "tabs", menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")), menuItem("Widgets", tabName = "widgets", icon = icon("th")) ) )
上述的 id = "tabs"
可以让你在server.R中用 input$tabs
来获取你在UI界面中选择的menuItem的tabName,这个很有用的
设定了menuItem后,那么在dashboardBody中需要加入tabItem来对每个menu设定各自的布局样式;如果有多个menu,那么先用 tabItems
函数表示有多个menu(一般也是有多个menu才会用这个函数),再用 tabItem
对每个menu进行设定
dashboardBody( tabItems( # First tab content tabItem(tabName = "dashboard", fluidRow( box(plotOutput("plot1", height = 250)) ) ), # Second tab content tabItem(tabName = "widgets", h2("Widgets tab content") ) ) )
在sidebar部分,我们可以加入一些输入小插件,类似于 fileInput
, radioButtons
, actionButton
等等
dashboardSidebar( fileInput(), radioButtons(), actionButton() )
如果不想要sidebar部分,则用 dashboardSidebar(disable = TRUE)
来禁止其使用
Body则是整个网页的主体部分,用于展示最终的内容,其主要靠 dashboardBody
函数
dashboardBody
也是使用 fluidRow
函数进行流动布局,对于每框内容则使用 box
函数(这是shinydashboard特有的),在 box
函数里还可以使用多个参数,其中可下拉折叠 collapsible
功能这个觉得很好用
box(width = NULL, status = "info", title = "PRM Protein List", collapsible = T, collapsed = F, textOutput("warning"))
如果你想对每个box下有多快内容,类似于tabpanels,那么用 tabBox
代替 box
即可,如下:
tabBox( side = "left", height = "250px", selected = "Tab1", tabPanel("Tab1", "Tab content 1"), tabPanel("Tab2", "Tab content 2"), )
还有类似于box的infoBox和valueBox,是一种另类展示一些简单信息的box,我不太常用。。。
除了上述比较常用的布局功能外,还有一些小细节的东西,比如用 dashboardPage(skin = "blue")
来设定主题颜色
如果想自定义的CSS,则需将CSS文件放在shiny文件夹下的www目录下,如 www/custom.css
参考资料:
http://shiny.rstudio.com/articles/layout-guide.html
http://shiny.rstudio.com/articles/dashboards.html本文出自于 http://www.bioinfo-scrounger.com 转载请注明出处
以上所述就是小编给大家介绍的《Shiny layout guide(shinydashboard)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Beginning ARKit for iPhone and iPad
Wallace Wang / Apress / 2018-11-5 / USD 39.99
Explore how to use ARKit to create iOS apps and learn the basics of augmented reality while diving into ARKit specific topics. This book reveals how augmented reality allows you to view the screen on ......一起来看看 《Beginning ARKit for iPhone and iPad》 这本书的介绍吧!