ShinyDashboard
https://rstudio.github.io/shinydashboard/
https://www.rdocumentation.org/packages/shinydashboard/versions/0.6.1
https://rdrr.io/cran/shinydashboard/api/
https://wikitech.wikimedia.org/wiki/Building_a_Shiny_Dashboard
flexDashboard가 rmarkdown기반이라면, ShinyDashboard는Shiny기반이다.
상용 dashboard도 있다. cf> tableau https://www.tableau.com
http://datadrivensecurity.info/blog/posts/2015/Jan/building-security-dashboards-with-r-and-shiny-shinydashboard/
library(shiny) library(shinydashboard) # Setup ShinyApp UI components ------------------------------------------- header <- dashboardHeader() sidebar <- dashboardSidebar() body <- dashboardBody() ui <- dashboardPage( skin="black", header, sidebar, body ) # Setup ShinyApp Server(back-end) components ------------------------------ server <- function(input, output, session) { } # Render Shiny app -------------------------------------------------------- shinyApp(ui, server)
Header
dash_header <- dashboardHeader(title="Dashboard Template", dropdownMenu(type="notifications"))
Sidebar
dash_sidebar <- dashboardSidebar( menuItem("TAB First", tabName ="tab01", icon=icon("line-chart")), menuItem("TAB Second", tabName ="tab02", icon=icon("database")) )
dash_sidebar <- dashboardSidebar( sidebarMenu(id = "sidebarmenu", menuItem("TAB First", tabName ="tab01", icon=icon("line-chart")), menuItem("TAB Second", tabName ="tab02", icon=icon("database")) ) )
Body
dash_body <- dashboardBody( fluidRow( box(title="Column", status="primary", width=NULL, collapsible=T, selectInput("t1p1_dataset", label="Data Set:", choices="Not selected!"), actionButton("Btn_load_t1p1_dataset", "Load") ) ) )
server <- function(input, output, session) { output$histogram <- renderPlot({ hist(faithful$eruptions) }) }
Sidebar의 Tab과 연결
library(shiny) library(shinydashboard) # Setup ShinyApp UI components ------------------------------------------- dash_header <- dashboardHeader(title="Dashboard Template", dropdownMenu(type="notifications")) dash_sidebar <- dashboardSidebar( sidebarMenu(id = "sidebarmenu", menuItem("TAB First", tabName ="tab01", icon=icon("line-chart")), menuItem("TAB Second", tabName ="tab02", icon=icon("database")) ) ) dash_body <- dashboardBody( tabItems( tabItem(tabName="tab01", fluidRow( box(title="Column", status="primary", width=NULL, collapsible=T, selectInput("t1p1_dataset", label="Data Set:", choices="Not selected!"), actionButton("Btn_load_t1p1_dataset", "Load"), plotOutput("histogram") ) ) ), tabItem(tabName="tab02", h1("TEST") ) ) ) ui <- dashboardPage( skin="black", dash_header, dash_sidebar, dash_body ) # Setup ShinyApp Server(back-end) components ------------------------------ server <- function(input, output, session) { output$histogram <- renderPlot({ hist(faithful$eruptions) }) } # Render Shiny app -------------------------------------------------------- shinyApp(ui, server)