How to Draw a plotly Line Plot in R (Example)
This article provides several examples of line plots using the plotly package in R.
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!
Overview
Line plots (or line charts; curve charts) are one of the most fundamental chart types.
They are typically used to represent changes over time or repeated measurement. Typically, values that are farther left on the plot are earlier in the time series, and values that are plotted higher on the graph have larger values.
At its simplest, a line plot is just a scatterplot that has a line drawn between each dot, so line plots will always have type = "scatter"
in the plotly code.
Example Data
To illustrate the primary features of line plots in plotly, we’ll create two synthetic data sets. You may need to install and load the tidyr
package to transform df_wide
into df_long
df_wide <- data.frame(date = c("2020-01-01", "2020-04-01", "2020-07-01", "2020-10-01"), VarA = c(15,20,25,18), VarB = c(22,24,26,28), VarC = c(5,10,20,40)) df_long <- df_wide %>% tidyr::pivot_longer(cols = c(VarA, VarB,VarC))
These data frames have identical information, but are structured differently in order to show examples that work in a variety of settings.
If you have not already done so, install and load the plotly package using this code: install.packages("plotly")
and library(plotly)
Creating a Line Plot
This code demonstrates how to plot the values of VarA over time:
plot_ly( data = df_wide, x = ~date, y = ~VarA, type = "scatter", mode = "lines" )
To add the other variables from the wide data set, we need to render multiple graphs and stack them on top of each other. We’ll also add the name
argument so that legend properly labels them:
plot_ly( data = df_wide, x = ~date, y = ~VarA, name = "VarA", type = "scatter", mode = "lines" ) %>% add_trace(y = ~VarB, name = "VarB")%>% add_trace(y = ~VarC, name = "VarC")
The same graph is easier to create with the long data set, since we can simply map the color to the name column:
plot_ly( data = df_long, x = ~date, y = ~value, color = ~name, type = "scatter", mode = "lines" )
We’ll mostly use df_long
in this tutorial, since this data structure is easier to work with.
Line and Marker Options
There are three modes for plotting this information:
mode = "lines"
plots the lines, but not the dotsmode = "lines+markers"
plots the lines and dotsmode = "markers"
plots the dots, but not the lines
Here’s an example for plotting the lines and markers together:
plot_ly( data = df_long, x = ~date, y = ~value, color = ~name, type = "scatter", mode = "lines+markers" )
Line Options
You can alter several properties of the lines that are being plotted. In plotly, these options are typically stored in a list and passed to the line argument in this format: line = list(...)
Here is an example to increase the width of the lines:
plot_ly( data = df_long, x = ~date, y = ~value, color = ~name, type = "scatter", mode = "lines+markers", line = list(width = 4) )
We can also make the lines dashed (or dotted):
plot_ly( data = df_long, x = ~date, y = ~value, color = ~name, type = "scatter", mode = "lines+markers", line = list(width = 4, dash = "dot") )
If you need each line to have different properties, the data structure of df_wide
makes this easier. Here is an example where the properties are different for each line being plotted:
plot_ly( data = df_wide, x = ~date, y = ~VarA, name = "VarA", type = "scatter", mode = "lines", line = list(width = 2, dash = "solid", color = "green")) %>% add_trace(y = ~VarB, name = "VarB", mode = "lines", line = list(width = 4, dash = "dash", color = "gray"))%>% add_trace(y = ~VarC, name = "VarC", mode = "lines+markers", line = list(dash = "dot", color = "red"))
Unified Hover Info
When you have multiple lines plotted on the same graphic, it can sometimes be easier to compare all y-values at each value of x.
We can modify this by introducing the layout
configurations in plotly, and setting hovermode = "x unified"
:
plot_ly( data = df_long, x = ~date, y = ~value, color = ~name, type = "scatter", mode = "lines+markers", line = list(width = 4, dash = "dot")) %>% layout(hovermode = "x unified")
Video, Further Resources & Summary
Check out this video for a tutorial of building these line plots in plotly:
Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.
If you accept this notice, your choice will be saved and the page will refresh.
You can check out these other articles for more detailed examples of these popular charts in plotly:
- Introduction to the plotly Package in R
- plotly Barplot in R
- plotly Scatterplot in R
- plotly Histogram in R
- plotly Boxplot in R
- plotly Heatmap in R
This page has explained how to create an interactive line chart using the plotly package in R. Please leave a comment below, in case you have any further questions.
Statistics Globe Newsletter