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

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

作者头像
1480
发布于 2019-05-24 03:23:56
发布于 2019-05-24 03:23:56
1.3K00
代码可运行
举报
文章被收录于专栏:数据分析1480数据分析1480
运行总次数:0
代码可运行

前言

前面已经介绍了shinydashboard框架的标题栏和侧边栏的输入项部分,这节介绍一下侧边栏的菜单项(menu items),侧边栏的菜单项主要用于切换不同的主体界面,点击不同的菜单项,主体呈现出不同的界面内容。

【R语言】shinydashboard系列一:标题栏

【R语言】shinydashboard系列二:侧边栏--输入项

菜单项menu items

菜单项分类

侧边栏的菜单项可以分为静态菜单项和动态菜单项,注意这里说的静态和动态说的是书写代码的时候,而不是对于呈现的结果。静态菜单项用到两个函数:sidebarMenu()和tabItems(),动态菜单项用到上一节讲到的一对输出函数:sidebarMenuOutput()和renderMenu()。

注意

静态菜单项:sidebarMenu()函数写在ui脚本dashboardSidebar()中,tabItems()函数写在dashboardBody()中;动态菜单项:输出项sidebarMenuOutput()函数写在ui脚本dashboardSidebar()中,renderMenu()函数写在server脚本中与之对应。

静态菜单项

静态菜单项主要用到两个函数:sidebarMenu()和tabItems(),sidebarMenu()函数写在dashboardSidebar()函数中,tabItems()函数写在dashboardBody()中,两种通过tabName相互对应。例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shiny)library(shinydashboard)library(ggplot2)library(DT)ui <- dashboardPage(  dashboardHeader(title = "Flash WorkingNotes"),  dashboardSidebar(    sidebarMenu(      menuItem("Data", tabName = "Data", icon = icon("dashboard")),      menuItem("Summary", tabName = "Summary",icon = icon("th"), badgeColor = "green"),      menuItem("Plot", tabName = "Plot", icon = icon("bar-chart-o")),      menuItem("Plot1", tabName = "Plot1", icon = icon("bar-chart-o"))    )),  dashboardBody(    tabItems(      tabItem(tabName = "Data", box(dataTableOutput("Data"), width = 100)),      tabItem(tabName = "Summary",verbatimTextOutput("Summary")),      tabItem(tabName = "Plot", plotOutput("Plot")),      tabItem(tabName = "Plot1",plotOutput("Plot1")))  ))server <- function(input, output) {  set.seed(123)  data = diamonds[sample(1:nrow(diamonds), 10000, replace = F), ]  output$Data <- renderDataTable({datatable(data)})   output$Summary <- renderPrint({str(data)})  output$Plot <- renderPlot({    ggplot(data, aes(x = price, fill = cut)) +       geom_histogram(position = "fill", bins = 30) +      ggtitle("histogram plot") +      theme(plot.title = element_text(hjust = 0.5)) + xlab("")  })  output$Plot1 <- renderPlot({    ggplot(data = data, aes(x = carat, y = price, colour = color)) +      geom_point() +  ggtitle("scatter diagram") +      theme(plot.title = element_text(hjust = 0.5))  })}shinyApp(ui, server)

注意上面sidebarMenu()和tabItems()书写位置,sidebarMenu()中的menuItem与tabItems()中的tabItem成对出现,通过tabname一一对应。

上面4个菜单项:Data菜单项呈现原数据,Summary菜单项查看数据字段类型,Plot菜单项绘制直方图,Plot1菜单项绘制散点图。上述代码运行结果:

动态菜单项

动态菜单项通过sidebarMenuOutput()和renderMenu()实现。sidebarMenuOutput()写在ui中的dashboardSidebar()中,renderMenu()写在server中与之对应,两者通过变量名匹配。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shiny)library(shinydashboard)library(ggplot2)library(DT)
ui <- dashboardPage(  dashboardHeader(title = "Flash WorkingNotes"),  dashboardSidebar(sidebarMenuOutput("menu")),  dashboardBody(     tabItems(    tabItem(tabName = "Data", box(dataTableOutput("Data"), width = 100)),    tabItem(tabName = "Summary",verbatimTextOutput("Summary")),    tabItem(tabName = "Plot", plotOutput("Plot")),    tabItem(tabName = "Plot1",plotOutput("Plot1")))))
server <- function(input, output) {  set.seed(123)  data = diamonds[sample(1:nrow(diamonds), 10000, replace = F), ]  output$menu <- renderMenu({    sidebarMenu(      menuItem("Data", tabName = "Data", icon = icon("dashboard")),      menuItem("Summary", icon = icon("th"), tabName = "Summary",badgeColor = "green"),      menuItem("Plot", tabName = "Plot", icon = icon("bar-chart-o")),      menuItem("Plot1", tabName = "Plot1", icon = icon("bar-chart-o"))    )  })  output$Author <- renderText({paste("The Author:", input$text)})  output$Data <- renderDataTable({datatable(data)})  output$Summary <- renderPrint({str(data)})  output$Plot <- renderPlot({    ggplot(data, aes(x = price, fill = cut)) +       geom_histogram(position = "fill", bins = 30) +      ggtitle("histogram plot") +      theme(plot.title = element_text(hjust = 0.5)) + xlab("")  })  output$Plot1 <- renderPlot({    ggplot(data = data, aes(x = carat, y = price, colour = color)) +      geom_point() +  ggtitle("scatter diagram") +      theme(plot.title = element_text(hjust = 0.5))  })}shinyApp(ui, server)

注意上面sidebarMenuOutput()和renderMenu()的书写位置,两者通过menu变量名匹配。

总结

恭喜勇士,进入西决!!!将侧边栏的输入项和菜单项介绍完整。菜单项用于切换主体呈现的界面,输入项用于改变主体呈现的内容,书写代码的时候菜单项有静态菜单项和动态菜单项。重点注意菜单项和输入项以及对应的输出项函数的书写位置,即可灵活使用。最后上传一下文章开头动态图的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(shiny)library(shinydashboard)library(ggplot2)library(DT)ui <- dashboardPage(  dashboardHeader(title = "Flash WorkingNotes"),  dashboardSidebar(    sidebarMenu(      menuItem("Data", tabName = "Data", icon = icon("dashboard")),      menuItem("Summary", icon = icon("th"), tabName = "Summary",badgeColor = "green"),      menuItem("Plot", tabName = "Plot", icon = icon("bar-chart-o")),      menuItem("Plot1", tabName = "Plot1", icon = icon("bar-chart-o"))    )),  dashboardBody(    tabItems(      tabItem(tabName = "Data", box(dataTableOutput("Data"), width = 100)),      tabItem(tabName = "Summary",verbatimTextOutput("Summary")),      tabItem(tabName = "Plot", plotOutput("Plot")),      tabItem(tabName = "Plot1",plotOutput("Plot1")))  ))
server <- function(input, output) {  set.seed(123)  data = diamonds[sample(1:nrow(diamonds), 10000, replace = F), ]    output$Author <- renderText({paste("The Author:", input$text)})  output$Data <- renderDataTable({datatable(data)})  output$Summary <- renderPrint({str(data)})  output$Plot <- renderPlot({    ggplot(data, aes(x = price, fill = cut)) +       geom_histogram(position = "fill", bins = 30) +      ggtitle("histogram plot") +      theme(plot.title = element_text(hjust = 0.5)) + xlab("")  })  output$Plot1 <- renderPlot({    ggplot(data = data, aes(x = carat, y = price, colour = color)) +      geom_point() +  ggtitle("scatter diagram") +      theme(plot.title = element_text(hjust = 0.5))  })}shinyApp(ui, server)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-24,如有侵权请联系 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
表达矩阵可视化大全
貌代码被折叠了,大家需要阅读原文才能复制粘贴我代码在Rstudio里面直接运行,几分钟就可以学会15个图的制作! basic visualization for expression matrix jmzeng1314@163.com March 14, 2017 我的博客 我们的论坛 捐赠我 安装并加载必须的packages 如果你还没有安装,就运行下面的代码安装: BiocInstaller::biocLite('CLL')install.packages('corrplot')install.pack
生信技能树
2018/03/08
1.2K0
表达矩阵可视化大全
基于shinydashboard搭建你的仪表板(五)
承接系列四,这一节介绍一下主体中的4种box函数。顾名思义,box函数是在主体中创建一些对象框,而对象框内可以包含任何内容。
1480
2019/06/03
2.3K0
基于shinydashboard搭建你的仪表板(二)
前面简单介绍了shinydashboard的标题栏,会发现标题栏是个鸡肋,只要掌握如何设置title即可。这一节简单介绍一下侧边栏。侧边栏(siderbar)主要起到导航作用,可以简单理解为输入栏,不同的输入栏(输入),主体(body)就呈现出不同内容(输出)。
1480
2019/05/22
2.7K0
创建自己的第一个shiny项目
https://yanshenli.shinyapps.io/shinydemo/
拴小林
2022/03/14
9520
创建自己的第一个shiny项目
用R-Shiny打造一个美美的在线App
最近迷上了动态可视化,突然发现shiny真是个好东西,能够将我之前所学都完美的结合在一起,形成一个集成的动态仪表盘! 今天做一个小小的案例,算是shiny动态可视化的小开端…… 这个案例是之前发过的中国人口结构动态金字塔图,这个图还是蛮不错,数据取自UN的官网,非常有现实意义的人口性别结构数据。 library(ggplot2) library(animation) library(dplyr) library(tidyr) library(xlsx) library(ggthemes) library(s
数据小磨坊
2018/04/11
1.3K0
用R-Shiny打造一个美美的在线App
bs4Dash | Shiny 仪表盘框架
bs4Dash 是一款基于 AdminLTE3 的 Bootstrap 4 Shiny 仪表盘模板框架,这个前端界面简洁清爽,用起来也和 Shinydashboard 非常类似,也易于学习使用。
生信菜鸟团
2020/11/11
3K0
bs4Dash | Shiny 仪表盘框架
R语言绘制靓图--ggthemr、gsci、tvthemes主题包
一般情况下只会设置palette 参数,指定主题名称,其它均为默认参数【即每种主题的字号,磅值,图边距等均可修改】。
拴小林
2021/10/11
6190
R语言绘制靓图--ggthemr、gsci、tvthemes主题包
我的 Shiny 练习 | 堆积柱状图
我最近在分析胆汁酸的数据,所以想画个堆积柱状图,看看组间情况,大概的设想就是这样:
生信菜鸟团
2021/02/03
2.5K0
我的 Shiny 练习 | 堆积柱状图
kaggle案例重复:科比的投篮选择之二
这里用到 group_by()和 summarise()函数。一个简单的小例子理解这两个函数的用法
用户7010445
2020/03/03
6670
ggplot2优雅绘制调色板图
R语言数据分析指南
2024/02/22
3060
ggplot2优雅绘制调色板图
让ChatGPT编写交互式网页应用的临床预测模型
R Shiny是一种基于Web的交互式数据可视化工具,能够帮助研究人员和临床医生快速构建交互式应用程序,从而进行数据分析和可视化。
Jamesjin63
2023/03/08
1.7K0
让ChatGPT编写交互式网页应用的临床预测模型
R绘图|ggplot自定义主题一包搞定
在用RStudio的ggplot2包进行画图时常常记不住对应的美化代码,检索又要花费大量的时间。今天给大家推荐一款非常容易上手,且能够解决大家记不住代码痛点的RStudio扩展R包ggThemeAssist。
小汪Waud
2023/02/16
8720
R绘图|ggplot自定义主题一包搞定
用R来拼图和排版,告别AI和PS(三):添加注释信息
前面我们讲了用R来拼图和排版,告别AI和PS(一)和用R来拼图和排版,告别AI和PS(二):调节宽度和高度,今天我们来看看如何给图片添加一些注释信息。
生信交流平台
2022/09/21
5480
用R来拼图和排版,告别AI和PS(三):添加注释信息
全网最全的R语言基础图形合集
直方图是一种对数据分布情况进行可视化的图形,它是二维统计图表,对应两个坐标分别是统计样本以及该样本对应的某个属性如频率等度量。
生信学习者
2024/06/12
950
全网最全的R语言基础图形合集
GMSB文章二:数据汇总和数据探索
森林图是一种常用于展示多个研究结果的统计图表。它显示了各个研究的效应量(effect size)或优势比(odds ratio, OR)以及它们的95%置信区间(confidence interval, CI)。通过森林图,研究者可以快速地比较和评估不同变量对结局变量的影响。
生信学习者
2024/06/29
1240
shiny随手日记1
该函数在默认不输入的情况下,会生成null,而导致后续的ggplot2不会生成空白图片,解决了我们的问题。
用户1359560
2020/12/22
2950
shiny随手日记1
R语言ggplot2一幅好看的频率分布直方图实例
https://www.andrewheiss.com/blog/2021/12/18/bayesian-propensity-scores-weights/
用户7010445
2021/12/28
2.7K0
R语言ggplot2一幅好看的频率分布直方图实例
文献组图
追风少年i
2025/01/07
620
文献组图
相关推荐
shiny动态仪表盘应用——中国世界自然文化遗产可视化案例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验