3D Line Plots in R
How to make interactive 3D line plots in R.
Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.
Basic 3D Line Plot
library(plotly)
data <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/3d-line1.csv')
data$color <- as.factor(data$color)
fig <- plot_ly(data, x = ~x, y = ~y, z = ~z, type = 'scatter3d', mode = 'lines',
opacity = 1, line = list(width = 6, color = ~color, reverscale = FALSE))
fig
Click to copy
3D Line and Markers Plot
library(plotly)
x <- c()
y <- c()
z <- c()
c <- c()
for (i in 1:62) {
r <- 20 * cos(i / 20)
x <- c(x, r * cos(i))
y <- c(y, r * sin(i))
z <- c(z, i)
c <- c(c, i)
}
data <- data.frame(x, y, z, c)
fig <- plot_ly(data, x = ~x, y = ~y, z = ~z, type = 'scatter3d', mode = 'lines+markers',
line = list(width = 6, color = ~c, colorscale = 'Viridis'),
marker = list(size = 3.5, color = ~c, colorscale = 'Greens', cmin = -20, cmax = 50))
fig
Click to copy
Custom Color Scale
library(plotly)
count <- 3000
x <- c()
y <- c()
z <- c()
c <- c()
for (i in 1:count) {
r <- i * (count - i)
x <- c(x, r * cos(i / 30))
y <- c(y, r * sin(i / 30))
z <- c(z, i)
c <- c(c, i)
}
data <- data.frame(x, y, z, c)
fig <- plot_ly(data, x = ~x, y = ~y, z = ~z, type = 'scatter3d', mode = 'lines',
line = list(width = 4, color = ~c, colorscale = list(c(0,'#BA52ED'), c(1,'#FCB040'))))
fig
Click to copy
3D Random Walk Plot
library(plotly)
data <- read.csv('https://raw.githubusercontent.com/plotly/datasets/master/_3d-line-plot.csv')
fig <- plot_ly(data, x = ~x1, y = ~y1, z = ~z1, type = 'scatter3d', mode = 'lines',
line = list(color = '#1f77b4', width = 1))
fig <- fig %>% add_trace(x = ~x2, y = ~y2, z = ~z2,
line = list(color = 'rgb(44, 160, 44)', width = 1))
fig <- fig %>% add_trace(x = ~x3, y = ~y3, z = ~z3,
line = list(color = 'bcbd22', width = 1))
fig
Click to copy
3D Density Plot
library(plotly)
dens <- with(diamonds, tapply(price, INDEX = cut, density))
data <- data.frame(
x = unlist(lapply(dens, "[[", "x")),
y = unlist(lapply(dens, "[[", "y")),
cut = rep(names(dens), each = length(dens[[1]]$x)))
fig <- plot_ly(data, x = ~x, y = ~y, z = ~cut, type = 'scatter3d', mode = 'lines', color = ~cut)
fig
Click to copy
Reference
See https://plotly.com/r/reference/#scatter3d for more information and chart 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)
Click to copy