# 3D Line Plots in Julia

How to make 3D Line Plots

### 3D Line plots

using PlotlyJS, CSV, DataFrames

df = dataset(DataFrame, "gapminder")
df_brazil = df[df.country .== "Brazil", :]

plot(df_brazil, x=:gdpPercap, y=:pop, z=:year, type="scatter3d", mode="lines")
using PlotlyJS, CSV, DataFrames
df = dataset(DataFrame, "gapminder")
df_europe = df[df.continent .== "Europe", :]

plot(df_europe, x=:gdpPercap, y=:pop, z=:year, type="scatter3d", mode="lines", color=:country)

#### 3D Line Plot of Brownian Motion

Here we represent a trajectory in 3D.

using PlotlyJS, Distributions, Dates

function brownian_motion(T=1, N=100; sigma=0.01, S0=20, mu=0.1)
dt = float(T)/(N-1)
t = 0:dt:T
W = randn(N)
W = cumsum(W) .* sqrt(dt) # standard brownian motion
X = @. (mu-0.5*sigma^2) * t + sigma * W
S0.*exp.(X) # geometric brownian motion
end

dates = Date(2012,1,1):Day(1):Date(2013,2,22)

T = Dates.value((extrema(dates)[2]-extrema(dates)[1])) / 365
N = size(dates)[1]
start_price = 100
y = brownian_motion(T, N, sigma=0.1, S0=start_price)
z = brownian_motion(T, N, sigma=0.1, S0=start_price)

layout = Layout(
width=800,
height=700,
autosize=false,
scene=attr(
camera=attr(
up=attr(x=0, y=0, z=1),
eye=attr(x=0, y=1.0707, z=1)
),
aspectratio=attr(x=1, y=1, z=0.7),
aspectmode="manual",
)
)
plot(scatter(
x=dates,
y=y,
z=z,
marker=attr(size=4, color=z, colorscale="Viridis"),
line=attr(color="darkblue", width=2),
type="scatter3d",
mode="lines+markers"
), layout)

#### Reference

See https://plotly.com/julia/reference/scatter3d/#scatter3d-marker-line for more information and chart attribute options!