Show Sidebar Hide Sidebar

# Graphing Multiple Chart Types in R

How to design figures with multiple chart types in R. An example of a line chart with a line of best fit and an uncertainty band.

### New to Plotly?

Plotly's R library is free and open source!
You can set up Plotly to work in online or offline mode.
We also have a quick-reference cheatsheet (new!) to help you get started!

### Version Check

Version 4 of Plotly's R package is now available!
Check out this post for more information on breaking changes and new features available in this version.

``````library(plotly)
packageVersion('plotly')
``````
``````## [1] '4.5.6.9000'
``````

### Bar and Line Chart

``````library(plotly)

airquality_sept <- airquality[which(airquality\$Month == 9),]
airquality_sept\$Date <- as.Date(paste(airquality_sept\$Month, airquality_sept\$Day, 1973, sep = "."), format = "%m.%d.%Y")

p <- plot_ly(airquality_sept) %>%
add_trace(x = ~Date, y = ~Wind, type = 'bar', name = 'Wind',
marker = list(color = '#C9EFF9'),
hoverinfo = "text",
text = ~paste(Wind, ' mph')) %>%
add_trace(x = ~Date, y = ~Temp, type = 'scatter', mode = 'lines', name = 'Temperature', yaxis = 'y2',
line = list(color = '#45171D'),
hoverinfo = "text",
text = ~paste(Temp, '°F')) %>%
layout(title = 'New York Wind and Temperature Measurements for September 1973',
xaxis = list(title = ""),
yaxis = list(side = 'left', title = 'Wind in mph', showgrid = FALSE, zeroline = FALSE),
yaxis2 = list(side = 'right', overlaying = "y", title = 'Temperature in degrees F', showgrid = FALSE, zeroline = FALSE))

# Set up API credentials: https://plot.ly/r/getting-started
``````

### Scatterplot with Loess Smoother

``````library(plotly)

p <- plot_ly(mtcars, x = ~disp, color = I("black")) %>%
add_markers(y = ~mpg, text = rownames(mtcars), showlegend = FALSE) %>%
line = list(color = '#07A4B5'),
name = "Loess Smoother", showlegend = TRUE) %>%
layout(xaxis = list(title = 'Displacement (cu.in.)'),
yaxis = list(title = 'Miles/(US) gallon'),
legend = list(x = 0.80, y = 0.90))

# Set up API credentials: https://plot.ly/r/getting-started
``````

### Loess Smoother with Uncertainty Bounds

``````library(plotly)
library(broom)

m <- loess(mpg ~ disp, data = mtcars)

p <- plot_ly(mtcars, x = ~disp, color = I("black")) %>%
add_markers(y = ~mpg, text = rownames(mtcars), showlegend = FALSE) %>%
line = list(color = 'rgba(7, 164, 181, 1)'),
name = "Loess Smoother") %>%
ymin = ~.fitted - 1.96 * .se.fit,
ymax = ~.fitted + 1.96 * .se.fit,
line = list(color = 'rgba(7, 164, 181, 0.05)'),
fillcolor = 'rgba(7, 164, 181, 0.2)',
name = "Standard Error") %>%
layout(xaxis = list(title = 'Displacement (cu.in.)'),
yaxis = list(title = 'Miles/(US) gallon'),
legend = list(x = 0.80, y = 0.90))

# Set up API credentials: https://plot.ly/r/getting-started
``````

### Plotting Forecast Objects

``````library(plotly)
library(forecast)

fit <- ets(USAccDeaths)
fore <- forecast(fit, h = 48, level = c(80, 95))

p <- plot_ly() %>%
add_lines(x = time(USAccDeaths), y = USAccDeaths,
color = I("black"), name = "observed") %>%
add_ribbons(x = time(fore\$mean), ymin = fore\$lower[, 2], ymax = fore\$upper[, 2],
color = I("gray95"), name = "95% confidence") %>%
add_ribbons(x = time(fore\$mean), ymin = fore\$lower[, 1], ymax = fore\$upper[, 1],
color = I("gray80"), name = "80% confidence") %>%
add_lines(x = time(fore\$mean), y = fore\$mean, color = I("blue"), name = "prediction")