- Web Application Development with R Using Shiny(Third Edition)
- Chris Beeley Shitalkumar R. Sukhdeve
- 562字
- 2021-07-16 17:52:08
A simple Shiny-enabled line plot
We have already seen how easy it is to draw line plots in ggplot2. Let's add some Shiny magic to a line plot now. This can be achieved very easily indeed in RStudio by just navigating to File | New File | R Markdown | New Shiny document and installing the dependencies when prompted. Once a title has been added, this will create a new R Markdown document with interactive Shiny elements. R Markdown is an extension of Markdown (see daringfireball.net/projects/markdown/), which is itself a markup language, such as HTML or LaTeX, which is designed to be easy to use and read. R Markdown allows R code chunks to be run within a Markdown document, which renders the contents dynamic. There is more information about Markdown and R Markdown in Chapter 2, Shiny First Steps. This section gives a very rapid introduction to the type of results possible using Shiny-enabled R Markdown documents.
For more details on how to run interactive documents outside RStudio, refer to goo.gl/Ngubdo. By default, a new document will have placeholder code in it which you can run to demonstrate the functionality. We will add the following:
---
title: "Gapminder"
author: "Chris Beeley"
output: html_document
runtime: shiny
---
```{r, echo = FALSE, message = FALSE}
library(tidyverse)
library(gapminder)
inputPanel(
checkboxInput("linear", label = "Add trend line?", value = FALSE)
)
# draw the plot
renderPlot({
thePlot = gapminder %>%
filter(year > 1960) %>%
group_by(continent, year) %>%
summarise(meanLife = mean(lifeExp)) %>%
ggplot(aes(x = year, y = meanLife,
group = continent, colour = continent)) +
geom_line()
if(input$linear){
thePlot = thePlot + geom_smooth(method = "lm")
}
print(thePlot)
})
```
The first part between the --- is the YAML, which performs the setup of the document. In the case of producing this document within RStudio, this will already be populated for you.
R chunks are marked as shown, with ```{r} to begin and ``` to close. The echo and message arguments are optional—we use them here to suppress output of the actual code and any messages from R in the final document.
We'll go into more detail about how Shiny inputs and outputs are set up later on in the book. For now, just know that the input is set up with a call to checkboxInput(), which, as the name suggests, creates a checkbox. It's given a name ("linear") and a label to display to the user ("Add trend line?"). The output, being a plot, is wrapped in renderPlot(). You can see the checkbox value being accessed on the if(input$linear){...} line. Shiny inputs are always accessed with input$ and then their name, so, in this case, input$linear. When the box is clicked—that is, when it equals TRUE—we can see a trend line being added with geom_smooth(). We'll go into more detail about how all of this code works later in the book; this is a first look so that you can start to see how different tasks are carried out using R and Shiny.
You'll have an interactive graphic once you run the document (click on Run document in RStudio or use the run() command from the rmarkdown package), as shown in the following screenshot:

As you can see, Shiny allows us to turn on or off a trend line courtesy of geom_smooth() from the ggplot2 package.
- 物聯網標準化指南
- Application Development with Qt Creator(Second Edition)
- 物聯網工程規劃技術
- MERN Quick Start Guide
- HTML5 Game development with ImpactJS
- 網絡的琴弦:玩轉IP看監控
- 圖解手機元器件維修技巧
- Building Web Applications with ArcGIS
- 4G小基站系統原理、組網及應用
- 網絡工程實施技術與方案大全
- 5G非正交多址接入技術:理論、算法與實現
- Qt5 Python GUI Programming Cookbook
- 物聯網與智慧農業
- Enterprise ApplicationDevelopment with Ext JSand Spring
- Corona SDK Application Design