Introduction to the plotly Package in R

 

Plotly is an alternative graphing library to ggplot2. Plotly uses JavaScript to render the final graphics, which provides several advantages for digital viewing.

In particular, plotly graphics automatically contain interactive elements that allow users to modify, explore, and experience the visualized data in new ways!

This article provides an example of a plotly graphic, describes the main features of plotly, and outlines the situations when plotly may be the right solution.

You can scroll through their gallery of basic charts to see a few examples.

 

Kirby White Researcher Statistician Programmer

Note: This article was created in collaboration with Kirby White. Kirby is an organizational effectiveness consultant and researcher, who is currently pursuing a Ph.D. at the Seattle Pacific University. You can read more about Kirby here!

 

Plotly Example

We’ll use the mtcars dataset for this example, as it is already loaded in R. Let’s store it in a new object called df and do a simple bit of pre-processing, though:

df <- mtcars
df$name <- row.names(mtcars)

Go ahead and install and load the plotly package using this code: install.packages("plotly") and library(plotly)

Let’s look at the relationship between the number of cylinders a car has, and its total engine displacement. At its simplest, you can create a scatterplot of this data in plotly with this code:

plot_ly(
  data = df,
  x = ~cyl,
  y = ~disp
)


The plot_ly() function initialized the graphing library while data = df indicates the data frame where the data is stored. x = ~cyl and y = ~disp indicate the columns to plot on each axis.

You may have gotten some warnings indicating that the “type” and “scatter mode” of the plot had not been specified. These two arguments are optional, but are required to alter the type of graph being created. This is what the code looks like when we specify those arguments to create the same graph:

plot_ly(
  data = df,
  x = ~cyl,
  y = ~disp, 
  type = "scatter",
  mode = "markers"
)


If we want each cylinder to be shown in a different color, we can add that with a single argument in our function. Since we want each number of cylinders to be treated as a discrete category instead of a numeric range, we’ll tell plotly to interpret cylinder as a factor.

plot_ly(
  data = df,
  x = ~cyl,
  y = ~disp,
  color = ~factor(cyl),
  type = "scatter",
  mode = "markers"
)


As you interact with your graph, you may have noticed that detailed information pops up over each point as you hover your cursor over it. This is one of the great features of plotly! With another simple addition, we can add the name of each vehicle to the popup:

plot_ly(
  data = df,
  x = ~cyl,
  y = ~disp,
  color = ~factor(cyl),
  text = ~name,
  type = "scatter",
  mode = "markers"
)


 

Plotly Features

Plotly has a rich and complex set of features. You’ve already encountered a few!

The most common features are:

  • Tooltip “hover” info
  • Zoom in and out of graphs
  • Users can export graphs as an image

Some of the more complex ones are:

  • Integrating multiple graphs together
  • Template hover info
  • Animations and moving graphics
  • Integration with enterprise coding environments

There are many more features to plotly!

For those who are already familiar with ggplot, you’ll be glad to know about the ggplotly function, which takes an existing ggplot graph and renders it with the plotly library.

Here’s an example using the same data we’ve already graphed. Note that the ggplot2 package has to be installed before running the following R code:

fig <- ggplot2::ggplot(data = df, aes(x=cyl, y=disp)) + geom_point(aes(color = factor(cyl)))
ggplotly(fig)


 

When to Use plotly

As you can see, plotly has several features that make it intriguing and interesting to work with. There are many applications where you could use ggplot or plotly, but here are the factors that may make plotly the best option:

  • Graphs presented in a digital/online format
  • You want users to interact with the graph
  • You need more customizability than ggplot allows
  • Want to render graphics in a higher-resolution
  • Collaborating with others across languages (e.g., Python, Bash, Node, etc.)
  • Building unusual chart types (treemaps, sunburst, sankey, etc.)

The main downside of plotly is its complexity and poor documentation. It is a very powerful library, but is targeted towards for a highly technical audience. Their documentation has improved substantially in the past year, but can still be difficult for new users to understand and find the information they need (as of this article’s publication).

 

Further Resources

You can check out these other articles for more detailed examples of these popular charts in plotly:

Check out this video to see the advantages of plotly and see an example:

 

 

We hope this graphics tutorial provided you with some insights on how to use the plotly library in R. In case you have any further questions, please let us know in the comments section below!

 

Subscribe to the Statistics Globe Newsletter

Get regular updates on the latest tutorials, offers & news at Statistics Globe.
I hate spam & you may opt out anytime: Privacy Policy.


2 Comments. Leave new

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.

Top