Chapter 7. Graphics
We talked briefly about renderPlot()
in Chapter 2; it’s a powerful tool for displaying graphics in your app. This chapter will show you how to use it to its full extent to create interactive plots, plots that respond to mouse events. You’ll also learn a couple of other useful techniques, including making plots with dynamic width and height and displaying images with the renderImage()
.
In this chapter, we’ll need ggplot2 as well as shiny, since that’s what I’ll use for the majority of the graphics:
library
(
shiny
)
library
(
ggplot2
)
Interactivity
One of the coolest things about plotOutput()
is that as well as being an output that displays plots, it can also be an input that responds to pointer events. That allows you to create interactive graphics where the user interacts directly with the data on the plot. Interactive graphics are a powerful tool, with a wide range of applications. I don’t have space to show you all the possibilities, so here I’ll focus on the basics, then point you toward resources to learn more.
Basics
A plot can respond to four different mouse1 events: click
, dblclick
(double-click), hover
(when the mouse stays in the same place for a little while), and brush
(a
rectangular selection tool). To turn these events into Shiny inputs, you supply a string to the corresponding plotOutput()
argument—for example, plotOutput("plot", click = "plot_click")
. This creates an input$plot_click
that you can use to handle mouse clicks on the plot.
Here’s a ...
Get Mastering Shiny now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.