Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于shinydashboard搭建你的仪表板(五)

基于shinydashboard搭建你的仪表板(五)

作者头像
1480
发布于 2019-06-03 08:31:17
发布于 2019-06-03 08:31:17
2.3K00
代码可运行
举报
文章被收录于专栏:数据分析1480数据分析1480
运行总次数:0
代码可运行

前言

承接系列四,这一节介绍一下主体中的4种box函数。顾名思义,box函数是在主体中创建一些对象框,而对象框内可以包含任何内容。

四种box函数

下面结合之前侧边栏以及主体布局简单介绍一下4种box函数。

box对象框

box对象框为基本对象框,用到的最多。函数为box(),函数中有几个常用的参数:

代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shiny)library(shinydashboard)library(ggplot2)
ui <- dashboardPage(  dashboardHeader(title = "WorkingNotes:Box"),    dashboardSidebar(      sidebarMenu(    menuItem("Plot1", tabName = "Plot1", icon = icon("dashboard")),    menuItem("Plot2", tabName = "Plot2", icon = icon("dashboard")),    menuItem("Plot3", tabName = "Plot3", icon = icon("dashboard")))),  dashboardBody(    tabItems(      tabItem(tabName = "Plot1",        fluidPage(          box("仅仅设置宽度为6"),          box("在上图基础上加上对象框title的背景颜色为red")        ),        fluidPage(          box(plotOutput("Plot"), width = 6),          box(plotOutput("Plot1"), status = "danger", width = 6))),      tabItem(tabName = "Plot2",              fluidPage(                box("在上图基础上加上背景颜色为green"),                box("在上图基础上加上最小化按钮")              ),              fluidPage(                box(plotOutput("Plot2"), status = "success",background = "green", width = 6),                box(plotOutput("Plot3"), status = "success",background = "green", collapsible = TRUE, width = 6))),            tabItem(tabName = "Plot3",              fluidPage(                box("在上图基础上加collapsed = TRUE,图形已经最小化"),                box("在上图基础上加上标题")              ),                fluidPage(                box(plotOutput("Plot4"),  status = "success", background = "green",collapsible = TRUE,                     collapsed = TRUE,width = 6),                box(plotOutput("Plot5"), status = "success", background = "green", collapsible = TRUE,                     collapsed = TRUE,title = "histogram", width = 6)))          )))
server <- function(input, output) {  set.seed(123)  data = diamonds[sample(1:nrow(diamonds), 10000, replace = F), ]  p <- renderPlot({    ggplot(data, aes(x = price, fill = cut)) +       geom_histogram(bins = 30) +      ggtitle("geom_histogram") +      theme(plot.title = element_text(hjust = 0.5)) + xlab("")  })    output$Plot <- p  output$Plot1 <- p  output$Plot2 <- p  output$Plot3 <- p  output$Plot4 <- p  output$Plot5 <- p}shinyApp(ui, server)

上述代码中:侧边栏创建3个菜单栏,每一个菜单栏对应的主体界面布局为基于行的主体布局,每一个界面的第一个行整体用于解释第二个行整体。

tabBox对象框

使用tabBox()函数创建具有选项卡的对象框,函数内使用tabPanel()创建不同的选项卡,tabPanel()内添加输出对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shiny)library(shinydashboard)library(ggplot2)library(DT)sider <- dashboardSidebar(      sidebarMenu(      menuItem("tabbox1", tabName = "tabbox1", icon = icon("dashboard")),      menuItem("tabbox2", tabName = "tabbox2", icon = icon("dashboard")),      menuItem("tabbox3", tabName = "tabbox3", icon = icon("dashboard")))    )
body <- dashboardBody(  tabItems(  ###tabBox标题为tabbox1,宽度为12,高度为500px,其他参数为默认    tabItem(tabName = "tabbox1",             fluidRow(              tabBox(title = "tabbox1",height = "500px", width = 12,                tabPanel("plot", plotOutput("Plot")),                tabPanel("data", dataTableOutput("Data")))            )  ),    tabItem(tabName = "tabbox2",            fluidRow(            ###selected = "data",故data为活跃选项卡,side="right",选项卡呈现在右边              tabBox(title = "tabbox2",                side = "right", height = "500px", width = 12,                selected = "data",                tabPanel("plot", plotOutput("Plot1")),                tabPanel("data", dataTableOutput("Data1"))))          ),    tabItem(tabName = "tabbox3",          fluidRow(          ###selected="plot",故plot选项卡为活跃            tabBox(height = "500px", width = 12,selected = "plot",              title = tagList(shiny::icon("gear"), "tabbox3"),              tabPanel("data", dataTableOutput("Data2")),              tabPanel("plot", plotOutput("Plot2"))))          ))  )  ui <- dashboardPage(  dashboardHeader(title = "WorkingNotes:tabBox"),  sider,  body)
server = function(input, output) {  set.seed(123)  data = diamonds[sample(1:nrow(diamonds), 10000, replace = F), ]    p <- renderPlot({    ggplot(data, aes(x = price, fill = cut)) +       geom_histogram(position = "dodge", bins = 30) +      ggtitle("geom_histogram") +      theme(plot.title = element_text(hjust = 0.5)) + xlab("")  })    d <- renderDataTable({    datatable(data)  })  output$Plot <- p  output$Plot1 <- p  output$Plot2 <- p  output$Data <- d  output$Data1 <- d  output$Data2 <- d
}shinyApp(ui, server)

上图侧边栏创建3个菜单栏,三个菜单栏对应的主体界面都是基于行的布局。第一个菜单栏主体的tabBox设置标题为“tabbox1”,其他参数为默认值,故选项卡位于左侧,第一个选项卡plot为激活状态;第二个菜单栏主体设置side = "right“,故选项卡位置位于右侧,且设置selected = "data“,故data选项卡为激活状态;第三个菜单栏设置一下title,设置selected = "plot“,故plot选项卡为激活状态。

infoBox对象框

infoBox对象框和valueBox两者功能类似,而且用到的不多,故这里简单介绍一下。infoBox()函数中有一个逻辑参数fill决定对象框是否为纯色,有静态infoBox,使用infoBox()函数创建,有动态infoBox,使用成对的infoBoxouput()函数和激活函数renderInfoBox()创建。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shinydashboard)
ui <- dashboardPage(  dashboardHeader(title = "WorkingNotes:Infoboxes"),  dashboardSidebar(),  dashboardBody(    ##fill为默认,非纯色填充    fluidRow(      # 静态infoBox      infoBox("New Orders", 10 * 2, icon = icon("credit-card")),      # 动态infoBoxes      infoBoxOutput("progressBox"),      infoBoxOutput("approvalBox")    ),        ##fill为TRue,纯色填充    fluidRow(      infoBox("New Orders", 10 * 2, icon = icon("credit-card"), fill = TRUE),      infoBoxOutput("progressBox2"),      infoBoxOutput("approvalBox2")    ),        fluidRow(      ##点击按钮,增加值      box(width = 4, "no actionButton"),      box(width = 4, actionButton("count", "Increment progress")),      box(width = 4, actionButton("count1", "Increment approval"))    )  ))
server <- function(input, output) {  output$progressBox <- renderInfoBox({    infoBox(      "Progress", paste0(25 + input$count, "%"), icon = icon("list"),      color = "purple"    )  })  output$approvalBox <- renderInfoBox({    infoBox(      "Approval", paste0(70 + input$count1, "%"), icon = icon("thumbs-up", lib = "glyphicon"),      color = "yellow"    )  })    ##与上面显示一样,唯一区别是实填充  output$progressBox2 <- renderInfoBox({    infoBox(      "Progress", paste0(25 + input$count, "%"), icon = icon("list"),      color = "purple", fill = TRUE    )  })  output$approvalBox2 <- renderInfoBox({    infoBox(      "Approval", paste0(70 + input$count1, "%"), icon = icon("thumbs-up", lib = "glyphicon"),      color = "yellow", fill = TRUE    )  })}
shinyApp(ui, server)

valueBox对象框

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shinydashboard)
ui <- dashboardPage(  dashboardHeader(title = "WorkingNotes:Valueboxes"),  dashboardSidebar(),  dashboardBody(    fluidRow(      ##静态valuebox      valueBox(10 * 2, "New Orders", icon = icon("credit-card")),            ##动态valuebox      valueBoxOutput("progressBox"),            valueBoxOutput("approvalBox")    ),    fluidRow(      ##点击按钮,增加值      box(width = 4, "no actionButton"),      box(width = 4, actionButton("count", "Increment progress")),      box(width = 4, actionButton("count1", "Increment approval"))    )  ))
server <- function(input, output) {  output$progressBox <- renderValueBox({    valueBox(      "Progress", paste0(25 + input$count, "%"), icon = icon("list"),      color = "purple"    )  })    output$approvalBox <- renderValueBox({    valueBox(      "Approval", paste0(70 + input$count1, "%"), icon = icon("thumbs-up", lib = "glyphicon"),      color = "yellow"    )  })}
shinyApp(ui, server)

总结

到这里将shinydashborad的标题栏、侧边栏以及主体简单的介绍一下,可以开发出自己的shinyapp了。下面章节将介绍如何将shinyapp共享到服务器上以及对shinyapp加密,输入账号和密码才能访问shinyapp。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据分析1480 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
shiny动态仪表盘应用——中国世界自然文化遗产可视化案例
这一篇很早就想写了,一直拖到现在都没写完。 虽然最近的社交网络上娱乐新闻热点特别多,想用来做可视化分析的素材简直多到不可想象,但是我个人一向不追星,对明星热文和娱乐类的新闻兴趣不是很大。还是更愿意把自
数据小磨坊
2018/04/11
1.3K0
shiny动态仪表盘应用——中国世界自然文化遗产可视化案例
基于shinydashboard搭建你的仪表板(四)
主体的布局使用Bootstrapgrid layout system(Bootstrap网格系统),可以将主体划分为12个列宽相等的区域以及任意可变高度的行。主体布局有3种布局:基于行的布局(Row_based Layout)、基于列的布局(column_based Layout)以及混合布局(Mixed row and column layout),使用fluidRow()函数和column()函数创建3种类型的布局。
1480
2019/05/30
1.1K0
基于shinydashboard搭建你的仪表板(三)
前面已经介绍了shinydashboard框架的标题栏和侧边栏的输入项部分,这节介绍一下侧边栏的菜单项(menu items),侧边栏的菜单项主要用于切换不同的主体界面,点击不同的菜单项,主体呈现出不同的界面内容。
1480
2019/05/24
1.3K0
R语言shiny之导航栏(navbar)和侧边栏(sidebar)小例子
在Y叔的公众号看到文章**《有人基于AnnotationHub和clusterProfiler做了个shiny,就能支持1700+的物种,你却老是在问我,非模式生物怎么办!》**。正好自己最近在学习R语言的shiny。于是找到这个shiny的代码看了看,发现不是很长,花点时间应该可以重复出来。
用户7010445
2020/05/26
3.1K0
bs4Dash | Shiny 仪表盘框架
bs4Dash 是一款基于 AdminLTE3 的 Bootstrap 4 Shiny 仪表盘模板框架,这个前端界面简洁清爽,用起来也和 Shinydashboard 非常类似,也易于学习使用。
生信菜鸟团
2020/11/11
3K0
bs4Dash | Shiny 仪表盘框架
创建自己的第一个shiny项目
https://yanshenli.shinyapps.io/shinydemo/
拴小林
2022/03/14
9520
创建自己的第一个shiny项目
我的 Shiny 练习 | 堆积柱状图
我最近在分析胆汁酸的数据,所以想画个堆积柱状图,看看组间情况,大概的设想就是这样:
生信菜鸟团
2021/02/03
2.5K0
我的 Shiny 练习 | 堆积柱状图
shiny入门学习路径
视频演示:http://mpvideo.qpic.cn/0bc37aadyaaanqaakvelqjrvb6gdht4aapaa.f10002.mp4? 1. 什么是Shiny? Shiny 是一个为
拴小林
2023/03/06
1.6K0
shiny入门学习路径
基于shinydashboard搭建你的仪表板(二)
前面简单介绍了shinydashboard的标题栏,会发现标题栏是个鸡肋,只要掌握如何设置title即可。这一节简单介绍一下侧边栏。侧边栏(siderbar)主要起到导航作用,可以简单理解为输入栏,不同的输入栏(输入),主体(body)就呈现出不同内容(输出)。
1480
2019/05/22
2.7K0
让ChatGPT编写交互式网页应用的临床预测模型
R Shiny是一种基于Web的交互式数据可视化工具,能够帮助研究人员和临床医生快速构建交互式应用程序,从而进行数据分析和可视化。
Jamesjin63
2023/03/08
1.7K0
让ChatGPT编写交互式网页应用的临床预测模型
R : Shiny|搭建单细胞数据分析云平台
在R for data science这本书中,作者提出数据分析的一个流程,在数据转换、可视化以及建模之后,来到数据分析的新阶段:与别人分享我们的数据。之前我们分享了许多单细胞数据分析的教程cellranger拆库定量、seurat质控分析,monocle轨迹推断,R语言给单细胞数据分析带来更多可能。那么,在数据分析进入下游之后,如何给自己的研究增加更多可交付的内容呢?Shiny会是一个不错的选择。
生信技能树jimmy
2020/03/27
3.7K0
Shiny 基础
作为一个实例展示, Shiny 中内置了一些例子,我们可以通过运行 runExample() 来探索Shiny APP的结构:
王诗翔呀
2020/11/13
2.5K0
Shiny 基础
数据可视化基础与应用-07-数据可视化第二版各种类型图表的绘制优化版
本系列博客为基于《数据可视化第二版》一书的教学资源博客。本文主要是第6章,比较与排序可视化的案例相关。
用户2225445
2024/04/03
3910
数据可视化基础与应用-07-数据可视化第二版各种类型图表的绘制优化版
shiny学习-2
使用这些控件需要两个参数,一个参数用来命名,一个参数是label,前一个被用来在程序内传递参数,后一个参数用来显示在用户界面 例子
火星娃统计
2020/09/15
1.9K0
shiny学习-2
R语言shiny~实现简单的GO富集分析
模仿的是 https://github.com/sk-sahu/sig-bio-shiny
用户7010445
2020/05/24
1.9K0
前端开发日常工作每日记录笔记(2019至2024合集)
从2019年开始,在工作之余会主动记录一些东西,像每天遇到的问题、感想和学到的新的知识点,后面搭建了博客又开始写博客,也整理和记录了很多的笔记。
人人都是码农
2025/04/04
980
单细胞实战之样本整理,细胞注释和部分图表绘制---从入门到进阶(初级篇1)
在完成了马拉松课程后,我们应该对单细胞分析有了基本了解。接下来,我们将开启新的篇章——单细胞实战:从入门到进阶。
凑齐六个字吧
2025/02/08
1510
单细胞实战之样本整理,细胞注释和部分图表绘制---从入门到进阶(初级篇1)
单细胞水平看生存分析相关基因
针对每个癌症的全部基因批量了做了单基因的cox分析,挑选统计学显著的去对应的癌症去打分,看看是否有单细胞亚群特异性。
凑齐六个字吧
2024/07/02
1480
单细胞水平看生存分析相关基因
使用Layui 框架,做的界面效果 及经验教训总结(mvc5+EF+layui)
以上有些没贴到代码的地方,请我的上一篇博文 MVC5+EasyUI+EF6增删改查以及登录登出的演示  里面找
明志德道
2023/10/21
7940
使用Layui 框架,做的界面效果 及经验教训总结(mvc5+EF+layui)
前端开发日常工作每日记录笔记(2019至2024合集)
从2019年开始,在工作之余会主动记录一些东西,像每天遇到的问题、感想和学到的新的知识点,后面搭建了博客又开始写博客,也整理和记录了很多的笔记。
人人都是码农
2025/04/06
1880
前端开发日常工作每日记录笔记(2019至2024合集)
推荐阅读
相关推荐
shiny动态仪表盘应用——中国世界自然文化遗产可视化案例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验