knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
library(plotly)
## Warning: package 'plotly' was built under R version 4.4.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.4.3
## 
## 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
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Use built-in dataset
data <- mtcars
data$car <- rownames(data)

# Interactive plot
plot_ly(data, 
        x = ~hp, 
        y = ~mpg,
        type = "scatter", 
        mode = "markers",
        size = ~cyl,
        color = ~factor(cyl),
        text = ~paste("Car:", car,
                      "<br>HP:", hp,
                      "<br>MPG:", mpg,
                      "<br>Cylinders:", cyl)) %>%
  layout(title = "Horsepower vs MPG (mtcars)",
         xaxis = list(title = "Horsepower"),
         yaxis = list(title = "Miles per Gallon"))