shiny & *dashboardshiny v1.8.0(Web Application Framework for R)
shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。
shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。

shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。

shiny WorkflowFile | New File | Shiny Web App ... *
# app.R #library(shiny)# 1. Define UI for applicationui <- fluidPage( # Nested R functions that assemble # an HTML UI for your app)# 2. Define server logicserver <- function(input, output) { # Instructions on how to (re)build # the R objects displayed in the UI}# 3. Combines ui and server into an appshinyApp(ui = ui, server = server)shiny WorkflowFile | New File | Shiny Web App ... *
# app.R #library(shiny)# 1. Define UI for applicationui <- fluidPage( # Nested R functions that assemble # an HTML UI for your app)# 2. Define server logicserver <- function(input, output) { # Instructions on how to (re)build # the R objects displayed in the UI}# 3. Combines ui and server into an appshinyApp(ui = ui, server = server)基于模板创建 app.R 文档
定义 app 的 UI:
*Input()、*Botton() 等函数增加用户输入界面*Output() 函数增加输出界面告诉服务端如何根据 server 函数中 R 代码来计算并呈现输出:
output$<id> 连接输出input$<id> 连接输入render*() 函数中以得到拟输出的结果用按键或命令 runApp(<path>) 运行 app
分享你的 app(如通过https://www.shinyapps.io/)
* 也可以用快捷方式输入snippet:shinyapp -> Shift+Tab
shiny BasicsUI >> example codes
# Define UI for application that draws a histogramui <- fluidPage( # Application title titlePanel("Old Faithful Geyser Data"), # Sidebar with a slider input for number of bins sidebarLayout( sidebarPanel( sliderInput( inputId = "bins", label = "Number of bins:", min = 1, max = 50, value = 30) ), # Show a plot of the generated distribution mainPanel( plotOutput(outputId = "distPlot") ) ))shiny BasicsUI >> layouts
fluidPage( titlePanel("Old Faithful Geyser"), textInput("a", ""))
⇓
<div class="container-fluid"> <h2>Old Faithful Geyser</h2> <div class="form-group shiny-input-container"> <label class="control-label" id="a-label" for="a"></label> <input id="a" type="text" class="form-control" value=""/> </div></div>
shiny BasicsUI >> layouts
fluidPage( titlePanel("Old Faithful Geyser"), textInput("a", ""))
⇓
<div class="container-fluid"> <h2>Old Faithful Geyser</h2> <div class="form-group shiny-input-container"> <label class="control-label" id="a-label" for="a"></label> <input id="a" type="text" class="form-control" value=""/> </div></div>
fluidPage(); navbarPage(); fixedPage(); fillPage(); bootstrapPage(); basicPage()sidebarLayout(); flowLayout(); splitLayout(); verticalLayout(); fluidRow(); fillRow(); fixedRow()titlePanel(); sidebarPanel(); mainPanel(); absolutePanel(); conditionalPanel(); fixedPanel(); headerPanel(); inputPanel(); navlistPanel(); tabPanel(); tabsetPanel(); wellPanel()shiny BasicsUI >> Inputs
inputfunc(inputId, label, ...) 来收集用户的输入input$<inputId> 获得响应式输入对象的当前取值shiny BasicsUI >> Inputs
inputfunc(inputId, label, ...) 来收集用户的输入input$<inputId> 获得响应式输入对象的当前取值
shiny BasicsUI >> Outputs
*Output() 和 后台 render*() 👫 工作来给 UI 增加输出shiny BasicsUI >> Outputs
*Output() 和 后台 render*() 👫 工作来给 UI 增加输出
shiny Basicsserver >> example codes
# Define server logic required to draw a histogramserver <- function(input, output, session) { output$distPlot <- renderPlot({ # generate bins based on input$bins from ui x <- faithful[, 2] bins <- seq(min(x), max(x), length.out = input$bins + 1) # draw the histogram with the specified number of bins hist(x, breaks = bins, col = 'darkgray', border = 'white') })}
shiny Basicsreactivity

shiny Basicsshiny::runExample("01_hello")

* shiny::runExample() 列出内置的11个App示例,可尝试运行并查看代码。
shinydashboard v0.7.2bs4Dash v2.3.0(Create Dashboards with Shiny)
shinydashboard Structureshinydashboard 利用 {{AdminLTE}} * 提供的模板主题工具,这让使用 shiny 开发仪表盘式的网页 App 变得更加容易。
* Best open source admin dashboard & control panel theme. Built on top of Bootstrap, AdminLTE provides a range of responsive, reusable, and commonly used components.
shinydashboard Structureshinydashboard 利用 {{AdminLTE}} * 提供的模板主题工具,这让使用 shiny 开发仪表盘式的网页 App 变得更加容易。
* Best open source admin dashboard & control panel theme. Built on top of Bootstrap, AdminLTE provides a range of responsive, reusable, and commonly used components.
## app.R ##library(shiny)library(shinydashboard)ui <- dashboardPage( # 仪表盘页面由三部分组成: dashboardHeader(), # 表头 dashboardSidebar(), # 边栏 dashboardBody() # 主栏)server <- function(input, output) { }shinyApp(ui, server)

shinydashboard Structure >> dashboardHeader()
ui <- dashboardPage( dashboardHeader( # 表头 title = "My awesome DashBoard", dropdownMenu( # 可重复多个 dropdownMenu() type = "messages", # "notifications" / "tasks" badgeStatus = "primary", icon = NULL, messageItem( # 可重复多个 messageItem() from, message, icon, time, href ), # ... ), # dropdownMenuOutput() # dynamic dropdown menu (UI-side) ), dashboardSidebar(), # 边栏 dashboardBody() # 主栏)
shinydashboard Structure >> dashboardSidebar()
SIDEBAR <- dashboardSidebar( sidebarMenu( menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")), menuItem("Widgets", icon = icon("th"), tabName = "widgets", badgeLabel = "new", badgeColor = "green") # menuItemOutput() # dynamic sidebar menu item (UI-side) ), # sidebarMenuOutput(), # dynamic sidebar menu (UI-side) # sidebarSearchForm(), sidebarUserPanel() sliderInput(inputId = "threshold", label = "Threshold", min = 1, max = 20, value = 5), # *Input())BODY <- dashboardBody( tabItems( tabItem(tabName = "dashboard", h2("Dashboard tab content")), tabItem(tabName = "widgets", h2("Widgets tab content")) ))dashboardPage(dashboardHeader(), SIDEBAR, BODY)
shinydashboard Structure >> dashboardBody()BODY <- dashboardBody( # mixed row and column layout fluidRow( box(title = "Box title", width = 6, status = "primary", "Box content"), box(status = "warning", width = 6, "Box content") ), fluidRow( column(width = 4, box( title = "Title 1", width = NULL, solidHeader = TRUE, status = "primary", "..." ), box( with = NULL, background = "black", "A box with a solid black background" ) ), # column(width = 4, box(...), box(...)), # column(width = 4, box(...), box(...)) ))# box() / tabBox(tabpanel()) / infoBox()/infoBoxOutput() / valueBox()/valueBoxOutput()

shinydashboard {{示例:Streaming CRAN data}}bs4Dash {{示例}}flexdashboard v0.6.2(R Markdown Format for Flexible Dashboards)
flexdashboard使用 R Markdown 将一组相关的数据可视化作为仪表盘图表展示
支持多种多样的内容组件(components),包括 htmlwidgets、基础图、lattice 图和 grid 图、表格数据、仪表(gauge)和数值框(value boxes)以及文本注释等等
灵活且容易设定的基于列或行的布局(layouts),内容组件会智能调整大小,填充浏览器空间并适合移动终端的显示。
可选择 Storyboard 布局(连环画布局)来展示系列可视化图表和相应的文字说明
可选择使用 {{Shiny}} 作为动态可视化的驱动引擎
可选择使用 {{bslib 包}},更容易个性化定制颜色、字体等
flexdashboard TemplateFile | New File | R Markdown ... | From Template | Flex Dashboard ...
flexdashboard TemplateFile | New File | R Markdown ... | From Template | Flex Dashboard ...
head codes
---title: "Untitled"output: flexdashboard::flex_dashboard: orientation: columns vertical_layout: fill---flexdashboard TemplateFile | New File | R Markdown ... | From Template | Flex Dashboard ...
head codes
---title: "Untitled"output: flexdashboard::flex_dashboard: orientation: columns vertical_layout: fill---```{r setup, include=FALSE}library(flexdashboard)```flexdashboard Templatelayout codes

flexdashboard Templatelayout codes

Knit it (Ctrl+Shift+K) and get ...

flexdashboard LayoutsLayouts >> markdown headers
# level 1: pages## level 2: columns / rows### level 3: boxeslevel 1: pages===level 2: columns / rows---### level 3: boxes
Layouts >> options
vertical_layout: fill | scrollorientation: columns | rowsstoryboard: false | trueflexdashboard LayoutsLayouts >> markdown headers
# level 1: pages## level 2: columns / rows### level 3: boxeslevel 1: pages===level 2: columns / rows---### level 3: boxes
Layouts >> options
vertical_layout: fill | scrollorientation: columns | rowsstoryboard: false | trueLayouts >> attributes
{data-orientation=columns|rows};{data-navmenu="Menu A"};{data-icon="fa-github"};{.hidden};{.storyboard}
{data-height=#}; {data-width=#};{data-padding=8}; {.no-padding};{.no-title};{.sidebar}
{data-commentary-width=300}
{.mobile}; {.no-mobile}
flexdashboard LayoutsLayouts >> markdown headers
# level 1: pages## level 2: columns / rows### level 3: boxeslevel 1: pages===level 2: columns / rows---### level 3: boxes
Layouts >> options
vertical_layout: fill | scrollorientation: columns | rowsstoryboard: false | trueLayouts >> attributes
{data-orientation=columns|rows};{data-navmenu="Menu A"};{data-icon="fa-github"};{.hidden};{.storyboard}
{data-height=#}; {data-width=#};{data-padding=8}; {.no-padding};{.no-title};{.sidebar}
{data-commentary-width=300}
{.mobile}; {.no-mobile}
>>{{Sample Layouts,总有一款适合你!}}<<
flexdashboard {{Components}}{{htmlwidgets}}
提供对多个 JavaScript 数据可视化库的 R 语言绑定,如 leaflet、dygraphs、plotly、rbokeh、highcharter、visNetwork等
R 基础图、lattice 图、grid 图等
表格数据
knitr::kable()shiny 的 dashboard 用 shiny::renderTable()DT 表格:静态的 dashboard 用 DT::datatable(),基于 shiny 的 dashboard 则用 DT::renderDataTable()flexdashboard {{Components}}{{htmlwidgets}}
提供对多个 JavaScript 数据可视化库的 R 语言绑定,如 leaflet、dygraphs、plotly、rbokeh、highcharter、visNetwork等
R 基础图、lattice 图、grid 图等
表格数据
knitr::kable()shiny 的 dashboard 用 shiny::renderTable()DT 表格:静态的 dashboard 用 DT::datatable(),基于 shiny 的 dashboard 则用 DT::renderDataTable()# 仪表 示例gauge( rating, min = 0, max = 50, gaugeSectors( success = c(41, 50), warning = c(21, 40), danger = c(0, 20) ))# 数值框 示例valueBox( spam, icon="fa-trash", href="#details" color = ifelse( spam > 10, "warning", "primary"))
文本说明
导航栏
flexdashboard {{示例:sharpe_ratio_flexdashboard}}相信同学们现在对 shiny、shinydashboard / bs4Dash 和 flexdashboard 有了初步的认识,以下列出相关的学习参考资料,同学们可进一步学习精进下 🏆
{{shiny 官网}} 上有大量的学习资料!
👍👍👍:循序渐进的 {{7 份教程}}
Welcome to Shiny
Build a user interface
Add control widgets
Display reactive output
Use R scripts and data
Use reactive expressions
Share your apps
👍👍👍:{{示例库}}

bslib v0.6.0: Custom 'Bootstrap' 'Sass' Themes for shiny and rmarkdown
thematic v0.1.4: Unified and Automatic 'Theming' of ggplot2, lattice, and base R Graphics
shiny v1.8.0(Web Application Framework for R)
Keyboard shortcuts
| ↑, ←, Pg Up, k | Go to previous slide |
| ↓, →, Pg Dn, Space, j | Go to next slide |
| Home | Go to first slide |
| End | Go to last slide |
| Number + Return | Go to specific slide |
| b / m / f | Toggle blackout / mirrored / fullscreen mode |
| c | Clone slideshow |
| p | Toggle presenter mode |
| t | Restart the presentation timer |
| ?, h | Toggle this help |
| o | Tile View: Overview of Slides |
| Esc | Back to slideshow |
shiny & *dashboardshiny v1.8.0(Web Application Framework for R)
shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。
shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。

shinyshiny app 是指和一台正运行着 R 会话(live R session)的计算机(即服务端 Server)相连的网页(即用户界面 UI)。

shiny WorkflowFile | New File | Shiny Web App ... *
# app.R #library(shiny)# 1. Define UI for applicationui <- fluidPage( # Nested R functions that assemble # an HTML UI for your app)# 2. Define server logicserver <- function(input, output) { # Instructions on how to (re)build # the R objects displayed in the UI}# 3. Combines ui and server into an appshinyApp(ui = ui, server = server)shiny WorkflowFile | New File | Shiny Web App ... *
# app.R #library(shiny)# 1. Define UI for applicationui <- fluidPage( # Nested R functions that assemble # an HTML UI for your app)# 2. Define server logicserver <- function(input, output) { # Instructions on how to (re)build # the R objects displayed in the UI}# 3. Combines ui and server into an appshinyApp(ui = ui, server = server)基于模板创建 app.R 文档
定义 app 的 UI:
*Input()、*Botton() 等函数增加用户输入界面*Output() 函数增加输出界面告诉服务端如何根据 server 函数中 R 代码来计算并呈现输出:
output$<id> 连接输出input$<id> 连接输入render*() 函数中以得到拟输出的结果用按键或命令 runApp(<path>) 运行 app
分享你的 app(如通过https://www.shinyapps.io/)
* 也可以用快捷方式输入snippet:shinyapp -> Shift+Tab
shiny BasicsUI >> example codes
# Define UI for application that draws a histogramui <- fluidPage( # Application title titlePanel("Old Faithful Geyser Data"), # Sidebar with a slider input for number of bins sidebarLayout( sidebarPanel( sliderInput( inputId = "bins", label = "Number of bins:", min = 1, max = 50, value = 30) ), # Show a plot of the generated distribution mainPanel( plotOutput(outputId = "distPlot") ) ))shiny BasicsUI >> layouts
fluidPage( titlePanel("Old Faithful Geyser"), textInput("a", ""))
⇓
<div class="container-fluid"> <h2>Old Faithful Geyser</h2> <div class="form-group shiny-input-container"> <label class="control-label" id="a-label" for="a"></label> <input id="a" type="text" class="form-control" value=""/> </div></div>
shiny BasicsUI >> layouts
fluidPage( titlePanel("Old Faithful Geyser"), textInput("a", ""))
⇓
<div class="container-fluid"> <h2>Old Faithful Geyser</h2> <div class="form-group shiny-input-container"> <label class="control-label" id="a-label" for="a"></label> <input id="a" type="text" class="form-control" value=""/> </div></div>
fluidPage(); navbarPage(); fixedPage(); fillPage(); bootstrapPage(); basicPage()sidebarLayout(); flowLayout(); splitLayout(); verticalLayout(); fluidRow(); fillRow(); fixedRow()titlePanel(); sidebarPanel(); mainPanel(); absolutePanel(); conditionalPanel(); fixedPanel(); headerPanel(); inputPanel(); navlistPanel(); tabPanel(); tabsetPanel(); wellPanel()shiny BasicsUI >> Inputs
inputfunc(inputId, label, ...) 来收集用户的输入input$<inputId> 获得响应式输入对象的当前取值shiny BasicsUI >> Inputs
inputfunc(inputId, label, ...) 来收集用户的输入input$<inputId> 获得响应式输入对象的当前取值
shiny BasicsUI >> Outputs
*Output() 和 后台 render*() 👫 工作来给 UI 增加输出shiny BasicsUI >> Outputs
*Output() 和 后台 render*() 👫 工作来给 UI 增加输出
shiny Basicsserver >> example codes
# Define server logic required to draw a histogramserver <- function(input, output, session) { output$distPlot <- renderPlot({ # generate bins based on input$bins from ui x <- faithful[, 2] bins <- seq(min(x), max(x), length.out = input$bins + 1) # draw the histogram with the specified number of bins hist(x, breaks = bins, col = 'darkgray', border = 'white') })}
shiny Basicsreactivity

shiny Basicsshiny::runExample("01_hello")

* shiny::runExample() 列出内置的11个App示例,可尝试运行并查看代码。
shinydashboard v0.7.2bs4Dash v2.3.0(Create Dashboards with Shiny)
shinydashboard Structureshinydashboard 利用 {{AdminLTE}} * 提供的模板主题工具,这让使用 shiny 开发仪表盘式的网页 App 变得更加容易。
* Best open source admin dashboard & control panel theme. Built on top of Bootstrap, AdminLTE provides a range of responsive, reusable, and commonly used components.
shinydashboard Structureshinydashboard 利用 {{AdminLTE}} * 提供的模板主题工具,这让使用 shiny 开发仪表盘式的网页 App 变得更加容易。
* Best open source admin dashboard & control panel theme. Built on top of Bootstrap, AdminLTE provides a range of responsive, reusable, and commonly used components.
## app.R ##library(shiny)library(shinydashboard)ui <- dashboardPage( # 仪表盘页面由三部分组成: dashboardHeader(), # 表头 dashboardSidebar(), # 边栏 dashboardBody() # 主栏)server <- function(input, output) { }shinyApp(ui, server)

shinydashboard Structure >> dashboardHeader()
ui <- dashboardPage( dashboardHeader( # 表头 title = "My awesome DashBoard", dropdownMenu( # 可重复多个 dropdownMenu() type = "messages", # "notifications" / "tasks" badgeStatus = "primary", icon = NULL, messageItem( # 可重复多个 messageItem() from, message, icon, time, href ), # ... ), # dropdownMenuOutput() # dynamic dropdown menu (UI-side) ), dashboardSidebar(), # 边栏 dashboardBody() # 主栏)
shinydashboard Structure >> dashboardSidebar()
SIDEBAR <- dashboardSidebar( sidebarMenu( menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")), menuItem("Widgets", icon = icon("th"), tabName = "widgets", badgeLabel = "new", badgeColor = "green") # menuItemOutput() # dynamic sidebar menu item (UI-side) ), # sidebarMenuOutput(), # dynamic sidebar menu (UI-side) # sidebarSearchForm(), sidebarUserPanel() sliderInput(inputId = "threshold", label = "Threshold", min = 1, max = 20, value = 5), # *Input())BODY <- dashboardBody( tabItems( tabItem(tabName = "dashboard", h2("Dashboard tab content")), tabItem(tabName = "widgets", h2("Widgets tab content")) ))dashboardPage(dashboardHeader(), SIDEBAR, BODY)
shinydashboard Structure >> dashboardBody()BODY <- dashboardBody( # mixed row and column layout fluidRow( box(title = "Box title", width = 6, status = "primary", "Box content"), box(status = "warning", width = 6, "Box content") ), fluidRow( column(width = 4, box( title = "Title 1", width = NULL, solidHeader = TRUE, status = "primary", "..." ), box( with = NULL, background = "black", "A box with a solid black background" ) ), # column(width = 4, box(...), box(...)), # column(width = 4, box(...), box(...)) ))# box() / tabBox(tabpanel()) / infoBox()/infoBoxOutput() / valueBox()/valueBoxOutput()

shinydashboard {{示例:Streaming CRAN data}}bs4Dash {{示例}}flexdashboard v0.6.2(R Markdown Format for Flexible Dashboards)
flexdashboard使用 R Markdown 将一组相关的数据可视化作为仪表盘图表展示
支持多种多样的内容组件(components),包括 htmlwidgets、基础图、lattice 图和 grid 图、表格数据、仪表(gauge)和数值框(value boxes)以及文本注释等等
灵活且容易设定的基于列或行的布局(layouts),内容组件会智能调整大小,填充浏览器空间并适合移动终端的显示。
可选择 Storyboard 布局(连环画布局)来展示系列可视化图表和相应的文字说明
可选择使用 {{Shiny}} 作为动态可视化的驱动引擎
可选择使用 {{bslib 包}},更容易个性化定制颜色、字体等
flexdashboard TemplateFile | New File | R Markdown ... | From Template | Flex Dashboard ...
flexdashboard TemplateFile | New File | R Markdown ... | From Template | Flex Dashboard ...
head codes
---title: "Untitled"output: flexdashboard::flex_dashboard: orientation: columns vertical_layout: fill---flexdashboard TemplateFile | New File | R Markdown ... | From Template | Flex Dashboard ...
head codes
---title: "Untitled"output: flexdashboard::flex_dashboard: orientation: columns vertical_layout: fill---```{r setup, include=FALSE}library(flexdashboard)```flexdashboard Templatelayout codes

flexdashboard Templatelayout codes

Knit it (Ctrl+Shift+K) and get ...

flexdashboard LayoutsLayouts >> markdown headers
# level 1: pages## level 2: columns / rows### level 3: boxeslevel 1: pages===level 2: columns / rows---### level 3: boxes
Layouts >> options
vertical_layout: fill | scrollorientation: columns | rowsstoryboard: false | trueflexdashboard LayoutsLayouts >> markdown headers
# level 1: pages## level 2: columns / rows### level 3: boxeslevel 1: pages===level 2: columns / rows---### level 3: boxes
Layouts >> options
vertical_layout: fill | scrollorientation: columns | rowsstoryboard: false | trueLayouts >> attributes
{data-orientation=columns|rows};{data-navmenu="Menu A"};{data-icon="fa-github"};{.hidden};{.storyboard}
{data-height=#}; {data-width=#};{data-padding=8}; {.no-padding};{.no-title};{.sidebar}
{data-commentary-width=300}
{.mobile}; {.no-mobile}
flexdashboard LayoutsLayouts >> markdown headers
# level 1: pages## level 2: columns / rows### level 3: boxeslevel 1: pages===level 2: columns / rows---### level 3: boxes
Layouts >> options
vertical_layout: fill | scrollorientation: columns | rowsstoryboard: false | trueLayouts >> attributes
{data-orientation=columns|rows};{data-navmenu="Menu A"};{data-icon="fa-github"};{.hidden};{.storyboard}
{data-height=#}; {data-width=#};{data-padding=8}; {.no-padding};{.no-title};{.sidebar}
{data-commentary-width=300}
{.mobile}; {.no-mobile}
>>{{Sample Layouts,总有一款适合你!}}<<
flexdashboard {{Components}}{{htmlwidgets}}
提供对多个 JavaScript 数据可视化库的 R 语言绑定,如 leaflet、dygraphs、plotly、rbokeh、highcharter、visNetwork等
R 基础图、lattice 图、grid 图等
表格数据
knitr::kable()shiny 的 dashboard 用 shiny::renderTable()DT 表格:静态的 dashboard 用 DT::datatable(),基于 shiny 的 dashboard 则用 DT::renderDataTable()flexdashboard {{Components}}{{htmlwidgets}}
提供对多个 JavaScript 数据可视化库的 R 语言绑定,如 leaflet、dygraphs、plotly、rbokeh、highcharter、visNetwork等
R 基础图、lattice 图、grid 图等
表格数据
knitr::kable()shiny 的 dashboard 用 shiny::renderTable()DT 表格:静态的 dashboard 用 DT::datatable(),基于 shiny 的 dashboard 则用 DT::renderDataTable()# 仪表 示例gauge( rating, min = 0, max = 50, gaugeSectors( success = c(41, 50), warning = c(21, 40), danger = c(0, 20) ))# 数值框 示例valueBox( spam, icon="fa-trash", href="#details" color = ifelse( spam > 10, "warning", "primary"))
文本说明
导航栏
flexdashboard {{示例:sharpe_ratio_flexdashboard}}相信同学们现在对 shiny、shinydashboard / bs4Dash 和 flexdashboard 有了初步的认识,以下列出相关的学习参考资料,同学们可进一步学习精进下 🏆
{{shiny 官网}} 上有大量的学习资料!
👍👍👍:循序渐进的 {{7 份教程}}
Welcome to Shiny
Build a user interface
Add control widgets
Display reactive output
Use R scripts and data
Use reactive expressions
Share your apps
👍👍👍:{{示例库}}

bslib v0.6.0: Custom 'Bootstrap' 'Sass' Themes for shiny and rmarkdown
thematic v0.1.4: Unified and Automatic 'Theming' of ggplot2, lattice, and base R Graphics