Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Transform your App into Dashboard
Now that we covered the basic staff that you need to know in order to build your App it is time to enhance its appearance and its functionality. The interface is very important fot the user as it must not only be friendly but also easy to use.
At this part we will transform your Shiny App into a beautiful Shiny Dashboard. Firstly we will create the interface and then step by step we will “move” the App you built in the previous parts into this. In part 8 we will move the app step by step into your dashboard and in the last two parts we will enhance its appearance even more and of course deploy it.
Read the examples below to understand the logic of what we are going to do and then test yous skills with the exercise set we prepared for you. Lets begin!
Answers to the exercises are available here.
INSTALLATION
The packages that we are going to use is shinydashboard
and shiny
. To install, run:
install.packages("shinydashboard")
install.packages("shiny")
Exercise 1
Install the package shinydashboard
and the package shiny
in your working directory.
BASICS
A dashboard has three parts: a header, a sidebar, and a body. Here’s the most minimal possible UI for a dashboard page.
## ui.R ##
library(shinydashboard)
dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody()
)
Exercise 2
Add a dashboardPage
and then Header, Sidebar and Body into your UI. HINT: Use dashboardPage
, dashboardHeader
, dashboardSidebar
, dashboardBody
.
First of all we should name it with title
like below:
## ui.R ##
library(shinydashboard)
dashboardPage(
dashboardHeader(title="Dashboard),
dashboardSidebar(),
dashboardBody()
)
Exercise 3
Name your dashboard “Shiny App”. HINT: Use title
.
Next, we can add content to the sidebar
. For this example we’ll add menu items that behave like tabs. These function similarly to Shiny’s tabPanels
: when you click on one menu item, it shows a different set of content in the main body.
There are two parts that need to be done. First, you need to add menuItems
to the sidebar, with appropriate tabNames
.
## Sidebar content
dashboardSidebar(
sidebarMenu(
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Widgets", tabName = "widgets", icon = icon("th"))
)
)
Exercise 4
Create three menuItem
, name them “DATA TABLE”, “SUMMARY” and “K-MEANS” respectively. Make sure to use distict tabName
for each one of them. The icon
is of your choise. HINT: Use menuItem
, tabName
and icon
.
In the body, add tabItems
with corresponding values for tabName
:
## Body content
dashboardBody(
tabItems(
tabItem(tabName = "dashboard",
h2("Dashboard"),
fluidRow(
box()
)
),
tabItem(tabName = "widgets",
h2("WIDGETS")
),
)
)
Exercise 5
Add tabItems
in dashboardBody
. Be sure to give the same tabName
to each one to get them linked with your menuItem
. HINT: Use tabItems
, tabItem
, h2
.
Obviously, this dashboard isn’t very useful. We’ll need to add components that actually do something. In the body we can add boxes that have content.
Firstly let’s create a box
for our dataTable
in the tabItem
with tabName
“dt”.
## Body content
dashboardBody(
tabItems(
tabItem(tabName = "dashboard",
h2("Dashboard"),
fluidRow(
box()
)
),
tabItem(tabName = "widgets",
h2("WIDGETS")
),
)
)
Exercise 6
Specify the fluidrow
and create a box
inside the “DATA TABLE” tabItem
. HINT: Use fluidrow
and box
.
Exercise 7
Do the same for the other two tabItem
. Create one fluidrow
and one box
in the “SUMMARY” and another fluidrow
with four box
in the “K-MEANS”.
Now just copy and paste the code below, which you used in part 7 to move your dataTable
inside the “DATA TABLE” tabItem
.
#ui.R
dataTableOutput("Table"),width = 400
#server.R
output$Table <- renderDataTable(
iris,options = list(
lengthMenu = list(c(10, 20, 30,-1),c('10','20','30','ALL')),
pageLength = 10))
Exercise 8
Place the sample code above in the right place in order to add the dataTable
“Table” inside the “DATA TABLE” tabItem
.
Now just copy and paste the code below, which you used in part 7 to move the dataTable
“Table2” inside the “SUMMARY” tabItem
.
#ui.R
dataTableOutput("Table2"),width = 400
#server.R
sumiris<-as.data.frame.array(summary(iris))
output$Table2 <- renderDataTable(sumiris)
Exercise 9
Place the sample code above in the right place in order to add the dataTable
“Table2” inside the “SUMMARY” tabItem
.
Do the same for the last exercise as you just have to put the code from part 7 inside the “K-MEANS” tabItem.
Exercise 10
Place the K-Means plot
and the three widgets from part 7 inside the four box
you created before.
Related exercise sets:
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.