Note the use of the p_load() function from the pacman package!

Q1

Load the gapminder dataset into your R environment and take a look at it. Note the location of different variables and include a summary of the average and maximum GDP by continent.

data<-gapminder%>%group_by(continent)%>%summarise(GDP = round(mean(gdpPercap),0), GDPmax = round(max(gdpPercap),0))
data
## # A tibble: 5 × 3
##   continent   GDP GDPmax
##   <fct>     <dbl>  <dbl>
## 1 Africa     2194  21951
## 2 Americas   7136  42952
## 3 Asia       7902 113523
## 4 Europe    14469  49357
## 5 Oceania   18622  34435

Q2

Using plotly, create a static bubble chart of the gapminder data. Map GDP to the x axis, life expectancy to the Y axis, and population to the size of the bubbles. Each bubble’s color should be based on the region of that nation. Hint: If size is not working properly for you, you may want to use: marker = list(sizemode = "diameter"))

static_plot <-plot_ly(gapminder, x = ~gdpPercap, y = ~lifeExp, size = ~pop, color = ~continent, marker = list(sizemode = "diameter"))
static_plot
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

Note here that the plot looks pretty messy because all the years are present on the plot. It would be nice to see the dots by country one year at a time, right?

Q3

Create a new plotly object that is similar to the previous one, but includes animation. This is as easy as adding frame to your plot_ly command and specifying the varable that should determine the frame.

animated_plot <- plot_ly(gapminder, x = ~gdpPercap, y = ~lifeExp, size = ~pop, color = ~continent, marker = list(sizemode = "diameter"), frame=~year)
animated_plot
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

Q4

Try adding a few options to alter your animation lightly. As long as you’ve created your plot correctly, all you need to do here is uncomment the code, run the chunk, and explain what each part did.

animated_chart <- animated_plot %>% 
  animation_opts(frame = 100,
                 redraw = TRUE,
                 easing = "linear")
animated_chart
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

Frame: sets the duration of each frame to 100 milliseconds, makes the graph move quicker. Redraw: specifies whether the plot should be redrawn at every frame during the animation. Easing: sets that the animation progresses at a constant rate throughout.

Q5

Now, let’s add a button to pause the animation. You should spend a bit of time looking at this code and understanding what it does, then try to move the button to a place that makes more sense.

interactive_chart <- animated_chart %>% layout(
   updatemenus = list(
     list(
      type = "buttons",
      showactive = FALSE,
       x = 1.2,  
       y = -0.17,  
       buttons = list(
         
         list(
           label = "Pause",
           method = "animate",
           args = list(NULL, list(frame = list(duration = 0, 
                                              redraw = TRUE), 
                                  mode = "immediate"))
         )
       )
     )
   )
 )
 interactive_chart
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

Q6

Add a title, axis labels, any other important annotations to the plot. This could include adding hover text or other elements.

interactive_chart2<-interactive_chart %>%
  layout(title = "Life Expectancy in Different Countries with GDP Data",
         xaxis = list(title = "GDP per Capita"),
         yaxis = list(title = "Life Expectancy"),
         showlegend = TRUE)%>%
  add_trace(text = ~paste("Country:", country, "<br>",
                          "Year:", year, "<br>",
                          "GDP per Capita:", gdpPercap, "<br>",
                          "Population:", pop), hoverinfo = "text")
interactive_chart2
## No trace type specified:
##   Based on info supplied, a 'scatter' trace seems appropriate.
##   Read more about this trace type -> https://plotly.com/r/reference/#scatter
## No scatter mode specifed:
##   Setting the mode to markers
##   Read more about this attribute -> https://plotly.com/r/reference/#scatter-mode

Q7

Practice publishing your final plot to Rpubs (or another location of your choice) and include the link in your submission.