内容简介:使用shinythemes包,可以给shiny app设置一个Bootstrap theme,使其看起来更加美观所有的theme均来自于如果确定选择某个theme后,则在
shinythemes
使用shinythemes包,可以给shiny app设置一个Bootstrap theme,使其看起来更加美观
所有的theme均来自于 http://bootswatch.com/
,现在这个包里所包含的theme有大约16种,我们可以在 ui.R
里写入 shinythemes::themeSelector()
来调用一个theme选择器,你可以在选择器的下拉框中依次查看每个theme的效果,示例代码展示网站: https://gallery.shinyapps.io/117-shinythemes/
如果确定选择某个theme后,则在 ui.R
中用下述代码调用
theme = shinytheme("cerulean")
有从上述Bootstrap网站中下载的主题(未包含在shinytheme包),可以将 bootstrap.css
放在 www
文件夹下,然后再用theme参数调用 theme = bootstrap.css
shinyalert
shinyalert包主要是用于生成一个messages Modal,跟shiny自带的Modal dialogs很类似,包的作者( Dean Attali ,一位shiny大牛,还写了shinyJS包)在其基础加上了一点JS库功能,使其不仅仅用于展示对话框messages,而且还能接受信息并且对其处理
使用shinyalert,需要在 ui.R
中加上 useShinyalert()
(跟shinyJS调用方式一样)
然后就能在 server.R
中用 shinyalert()
函数来实现你的messages Modal,如下加个警告通知:
shinyalert("Oops!", "Something went wrong.", type = "error")
如果想增加OK和Cancel按钮来确定返回的值(对应就是TRUE和FALSE),则需要在shinyalert函数中增加 confirmButtonText
和 cancelButtonText
,如果点击框外部也当Cancel返回,如下:
shinyalert( title = "Hello", text = "This is a modal", closeOnClickOutside = TRUE, type = "success", showConfirmButton = TRUE, showCancelButton = TRUE, confirmButtonText = "OK", cancelButtonText = "Cancel" )
如果将type参数改为 type = "input"
,则在Modal会有一个可输入框,然后用 input$shinyalert
来接受输入,如:
shinyalert( "Enter your name", type = "input", ) output$txt <- renderText(paste0("Your name is: ", input$shinyalert))
此外可以还通过 callbackR
函数接受回调信息
shinyalert( "Enter your name", type = "input", callbackR = function(x) { if(x != FALSE) message("Hello ", x) } )
利用这个回调信息,可以再次结合 shinyalert
给出提示Modal(但是不知道为啥有BUG了)
shinyalert( title = "What is your name?", type = "input", callbackR = function(value) { shinyalert(paste("Welcome", value)) } )
至于shiny内置的Modal,是搭配使用 showModal()
和 modalDialog()
函数,其比shinyalert优势在于可以在modal上放置各种形式的插件input或者文档rmarkdown等,如下所示:
observeEvent(input$show, { showModal(modalDialog( title = "Important message", "This is an important message!", fileInput(inputId = "list", label = "File Input:", accept = c(".txt")), includeMarkdown("www/about.md"), easyClose = TRUE )) })
shinyBS
shinyBS包可以将一些Bootstrap Components添加到shiny程序上,使得shiny app更具互动性
shinyBS是将alerts和Modals分成两个块:
-
Alerts主要由
bsAlert()
、createAlert()
和closeAlert()
组成,首先是在ui.R
代码中用bsAlert()确定alerts的位置,然后在server.R
代码中用createAlert()创建alerts内容,最后用closeAlert()关闭,示例如: https://ebailey78.github.io/shinyBS/docs/Alerts.html#bsAlert -
Modals中最常用的则是
bsModal()
函数,在不少shiny app中见过,使用比较简单,展示形式跟shiny自带的Modal也是差不多,在ui.R
中写入如下代码:bsModal(id = "modalExample", title = "Data Table", trigger = "tabBut", size = "large", dataTableOutput("distTable"))
如果想对这个modal进行控制(open or close),则可以在
server.R
中使用toggleModal函数,如下:toggleModal(session, modalId = "modalExample", toggle = "open")
Collapses主要用于收缩或者展开panels(展开或者关闭),首先在 ui.R
中用 bsCollapse()
创建一个组,然后在组下用 bsCollapsePanel()
函数控制各个子panels,最后在 server.R
中用 updateCollapse()
函数控制panels的变化,示例如: https://ebailey78.github.io/shinyBS/docs/Collapses.html
Buttons主要用于对shiny自带的buttons进行改进(样式、大小、是否block等),在 ui.R
和 server.R
下分别是 bsButton()
和 updateButton()
# ui.R bsButton("actOne", label = "Block Action Button", block = TRUE) # server.R updateButton(session, "actOne", disabled = !input$togOne)
Tooltips和Popovers简单的说就是是UI界面上增加上一些提示信息,以免提示信息文字对UI界面整体造成过于的杂乱感,很好记,前者就是鼠标悬浮在某个插件上就跳出提示信息,后者则是鼠标点击某个区域后跳出提示信息,示例如: https://ebailey78.github.io/shinyBS/docs/Tooltips_and_Popovers.html
colourpicker
colourpicker包主要用于创建一个颜色选择插件
其主要函数是 colourInput()
,根据其不同参数,可以用于多种形式的颜色选择,我比较喜欢的一种是:
colourInput(inputId = "col", label = "corlor (e.g., blue)", value = "blue", palette = "limited", returnName = TRUE)
其还有一个 plotHelper()
函数有非常有趣,其可以让你实时查看,当你选择不同颜色时,在图片上呈现的结果是怎么样的,作者还做了个GIF文件可供学习: GIF
DT
DT包主要是给JS的DataTables库提供了一个R接口,可以将R的表格以更加美观的形式展示(包括html)以及提供一定的交互操作,可参照官网文档以及笔记:Learning DT包
shinydashboard
shinydashboard包主要是提供了一个框架,方便让shiny来实现dashboards,可操作性比较强,有不少独立于shiny之外的布局函数,但是最终界面确实蛮好用的,可看下官方的例子 http://rstudio.github.io/shinydashboard/examples.html
官方使用文档 http://rstudio.github.io/shinydashboard/get_started.html
shinyLP
shinyLP包主要提供了一些函数用于设计一个shiny版的home page(或者说 Landing page)
可以用shinyLP::runExample()查看下作者给的几个模块,并给出了每个模块所使用的代码,所以可以根据个人需求,从代码中挑选合适的函数,可以用用
我一般用用 jumbotron()
函数和 thumbnail_label()
来设置布局
shinyjs
把shinyJS包写在最后,是因为这是一个非常棒的shiny包,如果你不太懂JS的话,这个包能让你在不会JS的前提下使用一些JS的功能,只能说非常好用,值得好好尝试下,内容比较多,大概要好好整一整。。。
本文出自于 http://www.bioinfo-scrounger.com 转载请注明出处
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
形式感+:网页视觉设计创意拓展与快速表现
晋小彦 / 清华大学出版社 / 2014-1-1 / 59.00元
网页设计师从早年的综合性工作中分化出来,形成了相对独立的专业岗位,网页设计也不再是单纯的软件应用,它衍生出了许多独立的研究方向,当网站策划、交互体验都逐渐独立之后,形式感的突破和表现成为网页视觉设计的一项重要工作。随着时代的发展,网页设计更接近于一门艺术。网络带宽和硬件的发展为网页提供了使用更大图片、动画甚至视频的权利,而这些也为视觉设计师提供了更多表现的空间。另外多终端用户屏幕(主要是各种移动设......一起来看看 《形式感+:网页视觉设计创意拓展与快速表现》 这本书的介绍吧!