Want to share your content on R-bloggers? click here if you have a blog, or here if you don't. Plotly is a d3 based graphing library used to produce interactive and high quality graphs in R. In the following exercises, we will look at some advanced plots and features avaialable in the package. Please note that the list here is not exhaustive.
We will use datasets available in base R packages.

You are expected to have the knowledge of generating basic plots using plotly package before attempting this exercise set. It is recommended that you go through this exercise set to test your knowledge on plotly basics.

Answers to the exercises are available here.

Refer to this link for more help on the plotly functions.
For a quick info on the functions and arguments required to build basic plotly plots, refer to this cheat sheet.

Learn more about Plotly in Section 17 Interactive Visualizations with Plotly of the online course Data Science and Machine Learning Bootcamp with R.

Exercise 1

Install and load the latest version of `plotly` package.

Generate separate histograms for the first four columns of `iris` dataset and save the plots in objects `p1`, `p2`, `p3` and `p4`.
HINT: Use `plot_ly()` function with `x` argument and `type="histogram"`. Use `name` argument to give appropriate name for the trace.

Exercise 2

a. Use `subplot()` function to generate a plot with all the plot objects from previous exercise as the arguments.

b. Use the `nrows` argument to arrange 2 plots per row.

Exercise 3

a. Generate a scatter plot for the iris dataset with first column on the x-axis and second column on the y-axis. Save the plot object.

b. Generate a 2d histogram using the add_histogram2d() function.Save the plot object.
HINT: Use the function `plot_ly()` with the same `x` and `y` arguments and pass the plot object to the 2-d histogram function.

Exercise 4

Generate a subplot with the scatter plot and the 2-d histogram created in the previous exercise.

Notice how the scatter plot can be represented in a more interesting way. Cells in the 2-d histogram are binned and represented with the color on the scale based on the cell population/density.

Exercise 5

Set the value of `shareX` and `shareY` arguments in the `subplot()` function to scale the plots to the same range of `x` and `y`.

Exercise 6

Now, let us build a 3-d surface plot. The syntax to build such plot is as below.
`plot_ly(z = matrix(1:100, nrow = 10)) %>% add_surface()`
Click, hold and drag the cursor to see the plot surface.

Build a 3-d surface plot using the `volcano` dataset available in the base R distribution.

Exercise 7

Let’s look at few helpful and commonly used arguments from the `layout()` function.

Create and save a scatter plot object with first and second columns of iris dataset as `x` and `y` arguments respectively. Colour the markers based on the `species`

Exercise 8

a. Add an appropriate title to the plot using the `layout` function and `title` argument.
b. Add an appropriate x-axis label using the `xaxis` argument. `xaxis` takes a list of attribute values. Refer to the R reference page for more help.
c. Add an appropriate y-axis label.

Exercise 9

a. Use the `range` attribute in the list of values given to the `xaxis` argument to set the x-axis range from 1 to 10.
b. Similarly, set the y-axis range from 1 to 5.

Exercise 10

Try different layout options to further customize the font, axes etc… of the plot.