Multiple Chart Types in R

How to design figures with multiple chart types in Plotly for R.


Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.

Multiple Chart Types in R

How to design figures with multiple chart types in R.

Chart Types versus Trace Types

Plotly's figure data structure supports defining subplots of various types (e.g. cartesian, polar, 3-dimensional, maps etc) with attached traces of various compatible types (e.g. scatter, bar, choropleth, surface etc). This means that Plotly figures are not constrained to representing a fixed set of "chart types" such as scatter plots only or bar charts only or line charts only: any subplot can contain multiple traces of different types.

Multiple Trace Types with Plotly

Figures produced with Plotly have the add_trace() method, so it is easy to start with a Plotly figure containing only traces of a given type, and add traces of another type.

library(plotly)
data <- data.frame(
  Fruits = c ("apples", "bananas", "oranges"),
  Line = c(1,3,2),
  Bar = c(2,1,3))

fig <- plot_ly(data , x = ~Fruits, y = ~Bar, type = 'bar', name = 'Last Year') %>%
  add_trace(data , x = ~Fruits, y = ~Line, type = 'scatter',  mode = 'lines', name = 'This year')

fig <- fig %>% layout(yaxis = list(title = "Amount"))
fig <- fig %>% layout(legend=list(title=list(text='<b> Time Period </b>')))
fig
applesbananasoranges00.511.522.53
Time Period Last YearThis yearFruitsAmount

Line Chart and a Bar Chart

library(plotly)
data <- data.frame(
  X = c (0, 1, 2, 3, 4, 5),
  Line = c(1.5, 1, 1.3, 0.7, 0.8, 0.9),
  Bar = c(1, 0.5, 0.7, -1.2, 0.3, 0.4))

fig <- plot_ly(data , x = ~X, y = ~Bar, type = 'bar') %>%
  add_trace(data , x = ~X, y = ~Line, type = 'scatter',  mode = 'lines+markers')

fig

A Contour and Scatter Plot of the Method of Steepest Descent

library(plotly)
library(jsonlite)
urlfile<-'https://raw.githubusercontent.com/plotly/datasets/master/steepest.json'
data<-fromJSON(url(urlfile))
X <- data[["contour_x"]][,]
Y <- data[["contour_y"]][,]
Z <- data[["contour_z"]][,,]
fig <- plot_ly() %>%
  add_trace(x = X, y= Y, z = Z, type = "contour") %>%
  hide_colorbar()%>% layout(showlegend = FALSE) %>%
  add_trace(x = data$trace_x, y = data$trace_y, type = "scatter",
            mode = "lines+markers", name = 'steepest', inherit =  FALSE,
            marker = list(color = 'black'), line = list(color = 'black'))
fig

Reference

See https://plotly.com/r/reference/ for more information and attribute options!

What About Dash?

Dash for R is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.

Learn about how to install Dash for R at https://dashr.plot.ly/installation.

Everywhere in this page that you see fig, you can display the same figure in a Dash for R application by passing it to the figure argument of the Graph component from the built-in dashCoreComponents package like this:

library(plotly)

fig <- plot_ly() 
# fig <- fig %>% add_trace( ... )
# fig <- fig %>% layout( ... ) 

library(dash)
library(dashCoreComponents)
library(dashHtmlComponents)

app <- Dash$new()
app$layout(
    htmlDiv(
        list(
            dccGraph(figure=fig) 
        )
     )
)

app$run_server(debug=TRUE, dev_tools_hot_reload=FALSE)