使用shinydashboard编写高级UI页面(1)

本文详细介绍如何使用Shiny和ShinyDashboard构建交互式仪表板,包括安装包、基本UI设计、添加直方图和滑动条插件,以及实现侧边导航栏的菜单tab功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先默认大家已经会常规的shiny语法了,如果还不清楚基础的shiny语法,可以学习shiny官方tutorial:shiny tutorial
学完这个,再学shinydashboard(shinydashboard是更复杂点的UI设计方案)

基础

以下内容来源于shiny官网的shinydashboard教程
shinydashboard

想要使用shinydashboard,首先需要安装包 shinydashboard

install.packages("shinydashboard")

一个dashboard包括三个部分:a header,a siderbar,a body
一个最简单的dashboard的UI如下(run App之后,可以看到这个最简单的界面):

## app.R ##
library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody()
)

server <- function(input, output) { }

shinyApp(ui, server)

1
但是这个空白的界面,没有太多用处
所以,接下来,我们在这里面添加一个直方图,以及一个滑动条插件

## app.R ##
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(),
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(plotOutput("plot1", height = 250)),

      box(
        title = "Controls",
        sliderInput("slider", "Number of observations:", 1, 100, 50)
      )
    )
  )
)

server <- function(input, output) {
  set.seed(122)
  histdata <- rnorm(500)

  output$plot1 <- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })
}

shinyApp(ui, server)

运行上列代码,如下图所示,可以得到这样的结果:
2

给侧边导航栏添加菜单tab

我们现在可以给侧边导航栏添加菜单项了,类似于shiny中的 tabPanel,当我们点击侧边导航栏中的一个菜单子项时,整体网页界面会跳转到该菜单所对应的界面。
构建菜单子项总的来说需要两步:
首先:在dashboard的sidebar中添加menuItem,并且对tabName 进行合理的命名

## Sidebar content
  dashboardSidebar(
    sidebarMenu(
      menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
      menuItem("Widgets", tabName = "widgets", icon = icon("th"))
    )
  )

然后,在dashboard的body中添加tabItem,需要注意的是,tabItem的value要和侧边栏中菜单项menuItemtabName保持一致

## Body content
  dashboardBody(
    tabItems(
      # First tab content
      tabItem(tabName = "dashboard",
        fluidRow(
          box(plotOutput("plot1", height = 250)),

          box(
            title = "Controls",
            sliderInput("slider", "Number of observations:", 1, 100, 50)
          )
        )
      ),

      # Second tab content
      tabItem(tabName = "widgets",
        h2("Widgets tab content")
      )
    )
  )

此时,点击不同的菜单项,就会出现不同的页面
3
点击widgets,如下所示:
4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值