interactive ggplot with tooltip using plotly

tldr: wrap ggplotly around ggplot and add info in aes()

A quick Random R thing I use a lot, recently learned, and I want you to know it too.

In this post I’ll show you how to make a quick interactive plot with ggplot and plotly, so that values are displayed when you hover your mouse over it. Why would you want this? If you are exploring the data, you want some quick insights into which values are where.

We first load the libraries and dataset.

library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
mtcars2 <- mtcars # I know, you've seen this set before
mtcars2$car <- rownames(mtcars) 
mtcars2$cyl <- as.factor(mtcars$cyl)

Then we plot a simple plot (non interactive). Also note that ggplot2 doesn’t know what to do with name = car, but doesn’t complain either

p1<- ggplot(mtcars2, aes(mpg, wt, name = car, color = cyl)) + geom_point()
p1

Now me make it interactive, on mouseover we want to see something. Everything we added to the ggplot aesthetics are now available under the tooltip (you can change that).

ggplotly(p1)

And that’s it. It’s just a simple trick. Wrap your ggplot in ggplotly and it works.

State of the machine

At the moment of creation (when I knitted this document ) this was the state of my machine: click here to expand

sessioninfo::session_info()
## ─ Session info ──────────────────────────────────────────────────────────
##  setting  value                       
##  version  R version 3.5.1 (2018-07-02)
##  os       macOS High Sierra 10.13.6   
##  system   x86_64, darwin15.6.0        
##  ui       X11                         
##  language (EN)                        
##  collate  en_US.UTF-8                 
##  tz       Europe/Amsterdam            
##  date     2018-09-13                  
## 
## ─ Packages ──────────────────────────────────────────────────────────────
##  package     * version date       source                               
##  assertthat    0.2.0   2017-04-11 CRAN (R 3.5.0)                       
##  backports     1.1.2   2017-12-13 CRAN (R 3.5.0)                       
##  bindr         0.1.1   2018-03-13 CRAN (R 3.5.0)                       
##  bindrcpp      0.2.2   2018-03-29 CRAN (R 3.5.0)                       
##  blogdown      0.8     2018-07-15 CRAN (R 3.5.0)                       
##  bookdown      0.7     2018-02-18 CRAN (R 3.5.0)                       
##  clisymbols    1.2.0   2017-05-21 CRAN (R 3.5.0)                       
##  colorspace    1.3-2   2016-12-14 CRAN (R 3.5.0)                       
##  crayon        1.3.4   2017-09-16 CRAN (R 3.5.0)                       
##  crosstalk     1.0.0   2016-12-21 CRAN (R 3.5.0)                       
##  data.table    1.11.4  2018-05-27 CRAN (R 3.5.0)                       
##  digest        0.6.15  2018-01-28 CRAN (R 3.5.0)                       
##  dplyr         0.7.6   2018-06-29 CRAN (R 3.5.1)                       
##  evaluate      0.11    2018-07-17 CRAN (R 3.5.0)                       
##  ggplot2     * 3.0.0   2018-07-03 CRAN (R 3.5.0)                       
##  glue          1.3.0   2018-09-04 Github (tidyverse/glue@4e74901)      
##  gtable        0.2.0   2016-02-26 CRAN (R 3.5.0)                       
##  htmltools     0.3.6   2017-04-28 CRAN (R 3.5.0)                       
##  htmlwidgets   1.2.1   2018-08-06 Github (ramnathv/htmlwidgets@29ca4f7)
##  httpuv        1.4.5   2018-07-19 CRAN (R 3.5.0)                       
##  httr          1.3.1   2017-08-20 CRAN (R 3.5.0)                       
##  jsonlite      1.5     2017-06-01 CRAN (R 3.5.0)                       
##  knitr         1.20    2018-02-20 CRAN (R 3.5.0)                       
##  labeling      0.3     2014-08-23 CRAN (R 3.5.0)                       
##  later         0.7.3   2018-06-08 CRAN (R 3.5.0)                       
##  lazyeval      0.2.1   2017-10-29 CRAN (R 3.5.0)                       
##  magrittr      1.5     2014-11-22 CRAN (R 3.5.0)                       
##  mime          0.5     2016-07-07 CRAN (R 3.5.0)                       
##  munsell       0.5.0   2018-06-12 CRAN (R 3.5.0)                       
##  pillar        1.3.0   2018-07-14 CRAN (R 3.5.0)                       
##  pkgconfig     2.0.1   2017-03-21 CRAN (R 3.5.0)                       
##  plotly      * 4.8.0   2018-07-20 CRAN (R 3.5.1)                       
##  plyr          1.8.4   2016-06-08 CRAN (R 3.5.0)                       
##  promises      1.0.1   2018-04-13 CRAN (R 3.5.0)                       
##  purrr         0.2.5   2018-05-29 CRAN (R 3.5.0)                       
##  R6            2.2.2   2017-06-17 CRAN (R 3.5.0)                       
##  Rcpp          0.12.18 2018-07-23 CRAN (R 3.5.0)                       
##  rlang         0.2.2   2018-08-16 cran (@0.2.2)                        
##  rmarkdown     1.10    2018-06-11 CRAN (R 3.5.0)                       
##  rprojroot     1.3-2   2018-01-03 CRAN (R 3.5.0)                       
##  scales        1.0.0   2018-08-09 cran (@1.0.0)                        
##  sessioninfo   1.0.0   2017-06-21 CRAN (R 3.5.0)                       
##  shiny         1.1.0   2018-05-17 CRAN (R 3.5.0)                       
##  stringi       1.2.4   2018-07-20 CRAN (R 3.5.0)                       
##  stringr       1.3.1   2018-05-10 CRAN (R 3.5.0)                       
##  tibble        1.4.2   2018-01-22 CRAN (R 3.5.0)                       
##  tidyr         0.8.1   2018-05-18 CRAN (R 3.5.0)                       
##  tidyselect    0.2.4   2018-02-26 CRAN (R 3.5.0)                       
##  viridisLite   0.3.0   2018-02-01 CRAN (R 3.5.0)                       
##  withr         2.1.2   2018-03-15 CRAN (R 3.5.0)                       
##  xfun          0.3     2018-07-06 CRAN (R 3.5.0)                       
##  xtable        1.8-2   2016-02-05 CRAN (R 3.5.0)                       
##  yaml          2.2.0   2018-07-25 CRAN (R 3.5.0)